Відповіді:
Від Java SE 8 далі користувачі просять перейти на java.time (JSR-310). Докладаються зусилля по створенню бібліотек scala, які обгортають java.time для scala, наприклад, scala-time . Якщо націлювання нижче рівня SE 8, скористайтеся одним із наведених нижче. Також дивіться, чому JSR-310 не Joda-Time
Нова обгортка Scala для Joda 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
Joda Time - це хороша бібліотека Java, є бібліотека обгортки / неявна конвертація, доступна для Joda Time у масштабі часу, створена Хорхе Ортісом . (Зверніть увагу, що наслідки мають ударну ефективність, але це залежить від того, що ви зробите, якщо ви помітите. І якщо у вас виникнуть проблеми з продуктивністю, ви можете просто повернутися до інтерфейсу Joda)
З ПРОЧИТАННЯ:
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
та scala.concurrent.duration._
. Замість цього використовували звичайний JodaTime і писали над ним власні велосипеди.
Якщо ви використовуєте Java 8, то більше не потрібно користуватися nscala
. Бібліотека Joda-Time переміщена в Java 8 під java.time
пакетом (JSR-310). Просто імпортуйте цей пакет у свій проект Scala.
У Scala немає стандартного способу роботи з датами. Доступні варіанти:
Я б уникав використовувати java.util.Date через добре задокументовані проблеми, які його оточують.
МОТИВАЦІЯ:
Бібліотеки дати та календаря Java в основному недостатні. Вони мінливі, не захищені від ниток і дуже незручні у використанні.
Бібліотека часу Joda - це чудова заміна для класів «Дата та Календар Java». За замовчуванням вони незмінні, мають набагато багатший і приємніший API, і при необхідності легко можуть бути перетворені на класи Дата та Календар Java.
Цей проект забезпечує тонкий рівень зручності навколо бібліотек Joda Time, що робить їх ідіоматичнішими для використання в Scala.
(скопійовано з https://github.com/jorgeortiz85/scala-time )