Réponses:
À partir de Java SE 8, les utilisateurs sont invités à migrer vers java.time (JSR-310). Il y a des efforts sur la création de bibliothèques scala enveloppant java.time pour scala, comme scala-time . Si le ciblage est inférieur à SE 8, utilisez l'un des éléments suivants. Voir aussi pourquoi JSR-310 n'est pas Joda-Time
Un nouveau wrapper Scala pour Joda Time . Ce projet est issu du scala-time puisqu'il semble que le 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 à scala-time créé par Jorge Ortiz . (Notez que les implicits ont un impact sur les performances, mais cela dépend de ce que vous faites si vous le remarquez. Et si vous rencontrez un problème de performance, vous pouvez simplement revenir à l'interface Joda)
Depuis le 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
et scala.concurrent.duration._
. Utilisé à la place du JodaTime ordinaire et écrit ses propres vélos dessus.
Si vous utilisez Java 8, il n'est plus nécessaire de l'utiliser nscala
. La bibliothèque Joda-Time a été déplacée vers Java 8 sous le java.time
package (JSR-310). Importez simplement ce package dans votre projet Scala.
Il n'y a pas de méthode standard pour travailler avec des dates dans Scala. Les options disponibles sont:
J'éviterais d'utiliser java.util.Date en raison des problèmes bien documentés qui l'entourent.
MOTIVATION:
Les bibliothèques Java Date et Calendar sont largement inadéquates. Ils sont mutables, non thread-safe et très peu pratiques à utiliser.
La bibliothèque Joda Time est un excellent remplacement pour les classes de date et de calendrier de Java. Ils sont immuables par défaut, ont une API beaucoup plus riche et plus agréable, et peuvent facilement être convertis en classes de date et de calendrier de Java si nécessaire.
Ce projet offre une fine couche de commodité autour des bibliothèques Joda Time, les rendant plus idiomatiques à utiliser dans Scala.
(copié de https://github.com/jorgeortiz85/scala-time )
Tout le monde utilise JodaTime, ces bibliothèques d'aide / wrapper Scala peuvent nécessiter une recompilation avec les nouvelles versions de Scala. Jodatime est la seule bibliothèque de temps qui existe depuis longtemps, elle est stable et fonctionne de manière fiable avec chaque version de Scala.