2016-10-22 88 views
1

如何將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語言庫。

回答

3

爲此,可以使用一個隱含的類,並且實現增加方法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) 
warning: there was one feature warning; re-run with -feature for details 
res15: java.time.LocalDateTime = 2016-10-22T16:44:46.787 
相關問題