¿Cuál es la forma estándar de trabajar con fechas y horas en Scala? ¿Debo usar tipos de Java como java.util.Date o hay alternativas nativas de Scala?
Desde Java SE 8 en adelante, se solicita a los usuarios que migren a java.time (JSR-310). Hay esfuerzos para crear bibliotecas scala que envuelvan java.time para scala, como scala-time . Si la orientación es inferior a SE 8, utilice uno de los siguientes. Vea también por qué JSR-310 no es Joda-Time
Un nuevo contenedor Scala para Joda Time . Este proyecto se bifurcó desde el tiempo de escala ya que parece que el tiempo de escala ya no se mantiene.
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 es una buena biblioteca Java, hay una biblioteca Scala wrapper / conversión implícita disponible para Joda Time en tiempo scala creada por Jorge Ortiz . (Tenga en cuenta que las implicaciones tienen un impacto en el rendimiento, pero depende de lo que haga si lo nota. Y si se encuentra con un problema de rendimiento, puede volver a la interfaz de Joda)
Desde el archivo Léame:
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
yscala.concurrent.duration._
. En su lugar, usé JodaTime simple y escribí bicicletas propias sobre él.Si está utilizando Java 8, entonces ya no es necesario usarlo
nscala
. La biblioteca Joda-Time se ha movido a Java 8 bajo eljava.time
paquete (JSR-310). Simplemente importe ese paquete a su proyecto Scala.fuente
No hay una forma estándar de trabajar con fechas en Scala. Las opciones disponibles son:
Evitaría usar java.util.Date debido a los problemas bien documentados que lo rodean.
fuente
MOTIVACIÓN:
Las bibliotecas Java Date y Calendar son en gran medida inadecuadas. Son mutables, no aptos para subprocesos y muy inconvenientes de usar.
La biblioteca Joda Time es un gran reemplazo para las clases de fecha y calendario de Java. Son inmutables por defecto, tienen una API mucho más rica y agradable, y se pueden convertir fácilmente a las clases de fecha y calendario de Java cuando sea necesario.
Este proyecto proporciona una capa delgada de conveniencia alrededor de las bibliotecas de Joda Time, haciéndolas más idiomáticas para usar dentro de Scala.
(copiado de https://github.com/jorgeortiz85/scala-time )
fuente
Todos usan JodaTime, estas bibliotecas de ayuda / envoltura de Scala pueden necesitar una nueva compilación con nuevas versiones de Scala. Jodatime es la única biblioteca de tiempo que existe desde hace mucho tiempo, es estable y funciona de manera confiable con todas las versiones de Scala.
fuente