回答:
Java SE 8以降、ユーザーはjava.time(JSR-310)への移行を求められます。scala-timeなど、java.timeをscala用にラップするscalaライブラリーを作成する取り組みがあります。SE 8未満をターゲットにする場合は、以下のいずれかを使用してください。JSR-310がJoda-Timeではない理由も参照してください
Joda Timeの新しいScalaラッパー。scala-timeはもはや維持されていないようで、このプロジェクトはscala-timeから分岐しました。
import com.github.nscala_time.time.Imports._
DateTime.now // returns org.joda.time.DateTime = 2009-04-27T13:25:42.659-07:00
DateTime.now.hour(2).minute(45).second(10) // returns org.joda.time.DateTime = 2009-04-27T02:45:10.313-07:00
DateTime.now + 2.months // returns org.joda.time.DateTime = 2009-06-27T13:25:59.195-07:00
DateTime.nextMonth < DateTime.now + 2.months // returns Boolean = true
DateTime.now to DateTime.tomorrow // return org.joda.time.Interval = > 2009-04-27T13:47:14.840/2009-04-28T13:47:14.840
(DateTime.now to DateTime.nextSecond).millis // returns Long = 1000
2.hours + 45.minutes + 10.seconds
// returns com.github.nscala_time.time.DurationBuilder
// (can be used as a Duration or as a Period)
(2.hours + 45.minutes + 10.seconds).millis
// returns Long = 9910000
2.months + 3.days
// returns Period
Joda Timeは優れたJavaライブラリであり、Jorge Ortizによって作成されたscala-timeでJoda Timeに利用できるScalaラッパー/暗黙の変換ライブラリがあります。(暗黙的にパフォーマンスに影響があることに注意してください。ただし、気づくかどうかによって異なります。パフォーマンスの問題が発生した場合は、Jodaインターフェースに戻すことができます)
READMEから:
USAGE:
import org.scala_tools.time.Imports._
DateTime.now
// returns org.joda.time.DateTime = 2009-04-27T13:25:42.659-07:00
DateTime.now.hour(2).minute(45).second(10)
// returns org.joda.time.DateTime = 2009-04-27T02:45:10.313-07:00
DateTime.now + 2.months
// returns org.joda.time.DateTime = 2009-06-27T13:25:59.195-07:00
DateTime.nextMonth < DateTime.now + 2.months
// returns Boolean = true
DateTime.now to DateTime.tomorrow
// return org.joda.time.Interval =
// 2009-04-27T13:47:14.840/2009-04-28T13:47:14.840
(DateTime.now to DateTime.nextSecond).millis
// returns Long = 1000
2.hours + 45.minutes + 10.seconds
// returns org.scala_tools.time.DurationBuilder
// (can be used as a Duration or as a Period)
(2.hours + 45.minutes + 10.seconds).millis
// returns Long = 9910000
2.months + 3.days
// returns Period
Imports
とscala.concurrent.duration._
。代わりに単純なJodaTimeを使用し、その上に自分の自転車を書きました。
Java 8を使用している場合は、nscala
もう使用する必要はありません。Joda-Timeライブラリは、java.time
パッケージ(JSR-310)の下でJava 8に移動されました。そのパッケージをScalaプロジェクトにインポートするだけです。
動機:
Javaの日付およびカレンダーライブラリは、主に不十分です。これらは変更可能であり、スレッドセーフではなく、使用するのは非常に不便です。
Joda Timeライブラリは、Javaの日付クラスとカレンダークラスの優れた代替品です。これらはデフォルトで不変であり、はるかに豊富で優れたAPIを備えており、必要に応じてJavaの日付クラスとカレンダークラスに簡単に変換できます。
このプロジェクトは、Joda Timeライブラリーに便利な薄層を提供し、Scala内で使用するための慣用的なものにします。