À partir de Java SE 8, les utilisateurs sont invités à migrer vers java.time (JSR-310). Des efforts sont faits pour créer des bibliothèques scala enveloppant java.time pour scala telles que scala-time . Si la cible est inférieure à SE 8, utilisez l'une des méthodes ci-dessous. Voir aussi Pourquoi JSR-310 n'est pas Joda-Time
Superbe Scala liste de nombreuses apis Scala DateTime populaires
Un nouveau wrapper Scala pour Joda Time . Ce projet a bifurqué de scala-time car il semble que scala-time ne soit plus maintenu.
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 est une bonne bibliothèque Java, il existe un wrapper Scala / une bibliothèque de conversion implicite disponible pour Joda Time à l'adresse suivante scala-time créé par Jorge Ortiz . (Notez que les implicites ont un impact sur les performances, mais cela dépend de ce que vous faites et si vous le remarquez. Et si vous rencontrez un problème de performance, vous pouvez simplement revenir à l'interface Joda).
Dans le fichier 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