【问题标题】:Adding Scala Concurrent Duration To a DateTime将 Scala 并发持续时间添加到 DateTime
【发布时间】:2016-10-22 13:12:45
【问题描述】:

如何将scala.concurrent.Duration 添加到一些 Java/Scala 时间表示中以获得未来/过去的时间?

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

import java.time.LocalDateTime

val futurePoint: LocalDateTime = LocalDateTime.now + (10 Seconds)

我不希望按照in this answer 的建议使用其他库,我正在尝试坚持使用 Java/Scala 语言库。

【问题讨论】:

    标签: java scala datetime


    【解决方案1】:

    您可以使用隐式类来完成此操作,并向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))
        }
      }
    }
    

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

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

    【讨论】:

      猜你喜欢
      • 2022-01-02
      • 2015-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-23
      • 1970-01-01
      • 2015-11-11
      相关资源
      最近更新 更多