Quelle est la manière standard de travailler avec des dates et des heures dans Scala? Dois-je utiliser des types Java tels que java.util.Date ou il existe des alternatives Scala natives?
À 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
etscala.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 lejava.time
package (JSR-310). Importez simplement ce package dans votre projet Scala.la source
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.
la source
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 )
la source
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.
la source