Answers:
从Java SE 8开始,要求用户迁移到java.time(JSR-310)。正在努力创建将java.time打包为scala的scala库,例如scala-time。如果定位低于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包装器/隐式转换库,该库可用于Scala-time的 Joda Time 。(请注意,隐式会影响性能,但是如果您会注意到,则取决于您的操作。如果遇到性能问题,您可以恢复为Joda界面)
从自述文件:
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的Date和Calendar类。它们默认情况下是不可变的,具有更丰富,更完善的API,并且在必要时可以轻松转换为Java的Date和Calendar类。
该项目为Joda Time库提供了一个方便的薄层,使它们在Scala中更惯用。