Wie kann man in Scala standardmäßig mit Datum und Uhrzeit arbeiten? Sollte ich Java-Typen wie java.util.Date verwenden oder gibt es native Scala-Alternativen?
Ab Java SE 8 werden Benutzer aufgefordert, auf java.time (JSR-310) zu migrieren. Es gibt Bemühungen, Scala-Bibliotheken zu erstellen, die java.time für scala wie scala-time einschließen . Wenn Sie weniger als SE 8 anvisieren, verwenden Sie eine der folgenden Möglichkeiten. Siehe auch Warum JSR-310 keine Joda-Zeit ist
Ein neuer Scala-Wrapper für Joda Time . Dieses Projekt hat sich von der Scala-Zeit getrennt, da es den Anschein hat, dass die Scala-Zeit nicht mehr eingehalten wird.
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 ist eine gute Java-Bibliothek. Es gibt eine Scala-Wrapper / implizite Konvertierungsbibliothek, die für Joda Time zur Scala-Zeit verfügbar ist und von Jorge Ortiz erstellt wurde . (Beachten Sie, dass Implizite einen Leistungseinbruch haben, aber es hängt davon ab, was Sie tun, wenn Sie es bemerken. Und wenn Sie auf ein Leistungsproblem stoßen, können Sie einfach zur Joda-Oberfläche zurückkehren.)
Aus der 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
und nicht herausfindenscala.concurrent.duration._
. Ich habe stattdessen einfaches JodaTime verwendet und eigene Fahrräder darüber geschrieben.Wenn Sie Java 8 verwenden, müssen Sie es nicht
nscala
mehr verwenden. Die Joda-Time-Bibliothek wurde unter demjava.time
Paket (JSR-310) in Java 8 verschoben . Importieren Sie dieses Paket einfach in Ihr Scala-Projekt.quelle
In Scala gibt es keine Standardmethode für die Arbeit mit Daten. Folgende Optionen stehen zur Verfügung:
Ich würde die Verwendung von java.util.Date aufgrund der gut dokumentierten Probleme vermeiden.
quelle
MOTIVATION:
Die Java-Datums- und Kalenderbibliotheken sind weitgehend unzureichend. Sie sind veränderlich, nicht threadsicher und sehr unpraktisch in der Verwendung.
Die Joda Time-Bibliothek ist ein großartiger Ersatz für Javas Datums- und Kalenderklassen. Sie sind standardmäßig unveränderlich, haben eine viel umfangreichere und schönere API und können bei Bedarf problemlos in die Datums- und Kalenderklassen von Java konvertiert werden.
Dieses Projekt bietet eine dünne Ebene an Komfort für die Joda Time-Bibliotheken, sodass sie in Scala idiomatischer verwendet werden können.
(kopiert von https://github.com/jorgeortiz85/scala-time )
quelle
Jeder verwendet JodaTime. Diese Scala-Helfer- / Wrapper-Bibliotheken müssen möglicherweise mit neuen Versionen von Scala neu kompiliert werden. Jodatime ist die einzige Zeitbibliothek, die es schon lange gibt. Sie ist stabil und funktioniert zuverlässig mit jeder Version von Scala.
quelle