Risposte:
Da Java SE 8 in poi, agli utenti viene chiesto di migrare su java.time (JSR-310). Ci sono sforzi per creare librerie scala che includono java.time per scala come scala-time . Se il targeting è inferiore a SE 8, utilizza uno dei seguenti. Vedi anche Perché JSR-310 non è Joda-Time
Un nuovo involucro Scala per Joda Time . Questo progetto è stato biforcuto dallo scala-tempo poiché sembra che lo scala-tempo non sia più mantenuto.
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 è una buona libreria Java, esiste una libreria wrapper Scala / conversione implicita disponibile per Joda Time nello scala-time creato da Jorge Ortiz . (Nota che gli impliciti hanno un impatto sulle prestazioni, ma dipende da cosa fai se noterai. E se incontri un problema di prestazioni puoi semplicemente tornare all'interfaccia di Joda)
Dal 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
e scala.concurrent.duration._
. Ha usato invece JodaTime semplice e ci ha scritto sopra le biciclette.
Se si utilizza Java 8, non è più necessario utilizzarlo nscala
. La libreria Joda-Time è stata spostata in Java 8 sotto il java.time
pacchetto (JSR-310). Importa semplicemente quel pacchetto nel tuo progetto Scala.
Non esiste un modo standard di lavorare con le date in Scala. Le opzioni disponibili sono:
Eviterei di usare java.util.Date a causa dei problemi ben documentati che lo circondano.
MOTIVAZIONE:
Le librerie Java Date e Calendar sono in gran parte inadeguate. Sono mutabili, non thread-safe e molto scomodi da usare.
La libreria Joda Time è un ottimo sostituto delle classi Date e Calendar di Java. Sono immutabili per impostazione predefinita, hanno un'API molto più ricca e più piacevole e, se necessario, possono essere facilmente convertiti nelle classi Date e Calendar di Java.
Questo progetto fornisce un sottile livello di praticità attorno alle librerie Joda Time, rendendole più idiomatiche da usare all'interno di Scala.
(copiato da https://github.com/jorgeortiz85/scala-time )