将 Scala 并发持续时间添加到日期时间

Ram*_*gil 3 java datetime scala

我如何scala.concurrent.Duration在一些 Java/Scala 时间表示中添加一个以获取未来/过去的时间?

我真的很喜欢 Scala 如何Duration为整数添加方法(例如10 seconds),所以我正在尝试做一些以下形式的事情:

import java.time.LocalDateTime

val futurePoint: LocalDateTime = LocalDateTime.now + (10 Seconds)
Run Code Online (Sandbox Code Playgroud)

我不想使用本答案中建议的其他库,我试图坚持使用 Java/Scala 语言库。

Yuv*_*kov 5

您可以使用隐式类来完成此操作,并将方法添加到LocalDateTime

import java.time.LocalDateTime
import java.time.{Duration => JDuration}

import scala.concurrent.duration._

object M {
  def main(args: Array[String]): Unit = {
    val futurePoint: LocalDateTime = LocalDateTime.now + (10 seconds)
    println(futurePoint)
  }

  implicit class RichDateTime(val localDateTime: LocalDateTime) extends AnyVal {
    def +(duration: Duration): LocalDateTime = {
      localDateTime.plus(JDuration.ofMillis(duration.toMillis))
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

现在您可以运行以下命令(警告是因为使用了中缀表示法):

scala> LocalDateTime.now + (1 minute)
res15: java.time.LocalDateTime = 2016-10-22T16:44:46.787
Run Code Online (Sandbox Code Playgroud)