2016-10-22 6 views
1

scala.concurrent.DurationをJava/Scalaの時間表現に追加して、将来/過去の時間を取得するにはどうすればよいですか?Scala同時継続時間をDateTimeに追加

私は実際にどのようにスカラ座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 
関連する問題