Что это стандартный способ работы с датами и временем в Scala? Должен ли я использовать типы Java или есть собственные альтернативы Scala?
каков стандартный способ работы с датами и временем в Scala? Должен ли я использовать типы Java, такие как java.утиль.Дата или есть родные альтернативы Scala?
5 ответов:
начиная с Java SE 8, пользователям предлагается перейти на java.время (JSR-310). Есть усилия по созданию библиотек scala, обертывающих java.время для scala таких как scala-time. Если таргетинг ниже, чем SE 8, используйте один из приведенных ниже. Также смотрите почему JSR-310 не Joda-Time
новая обертка Scala для Joda Time. Этот проект разветвился от scala-time, так как кажется, что scala-time больше нет поддерживается.
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Джода Времени хорошая библиотека Java, есть библиотека Scala-оболочки / неявного преобразования, доступная для времени Joda в scala-time создано Хорхе Ортис. (Неявные преобразования имеют производительность, но это зависит от того, что вы будете делать, если вас заметят. И если вы столкнетесь с проблемой производительности, вы можете просто вернуться к интерфейсу Joda)
из 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
нет стандартный способ работы с датами в Scala. Доступны следующие опции:
- использовать java.время (если вы используете Java 8), так как в него встроено лучшее время JODA. Никакие неявные преобразования.
- используйте nscala-time.
- библиотека даты Lamma (относительно новая библиотека на сцене)
Я бы избегал использования java.утиль.Дата из-за хорошо документированных проблем, связанных с ним.
мотивация:
библиотеки даты и календаря Java в значительной степени неадекватны. Они изменчивы, не потокобезопасно, и очень неудобно в использовании.
библиотека времени Joda является отличной заменой для даты и календаря Java занятия. Они неизменяемы по умолчанию, имеют гораздо более богатый и приятный API, а также при необходимости может быть легко преобразован в классы даты и календаря Java.
этот проект обеспечивает тонкий слой удобства вокруг Joda Время библиотеки, что делает их более идиоматичными для использования в Scala.
(скопировано с https://github.com/jorgeortiz85/scala-time)
все используют JodaTime, эти библиотеки Scala helper / wrapper могут нуждаться в повторной компиляции с новыми версиями Scala. Jodatime-это единственная библиотека времени, которая существует уже давно, стабильна и надежно работает с каждой версией Scala.
Comments