Câu trả lời:
Từ Java SE 8 trở đi, người dùng được yêu cầu chuyển sang java.time (JSR-310). Có những nỗ lực tạo thư viện scala gói java.time cho scala như scala-time . Nếu nhắm mục tiêu thấp hơn SE 8, hãy sử dụng một trong các cách bên dưới. Đồng thời xem tại sao JSR-310 không phải là Joda-Time
Một gói Scala mới cho Joda Time . Dự án này rẽ nhánh từ thời gian scala vì dường như thời gian scala không còn được duy trì.
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 là một thư viện Java tốt, có một thư viện chuyển đổi bao bọc / ẩn Scala có sẵn cho Joda Time vào thời gian scala được tạo bởi Jorge Ortiz . (Lưu ý ngụ ý có hiệu năng, nhưng nó phụ thuộc vào những gì bạn làm nếu bạn sẽ chú ý. Và nếu bạn gặp vấn đề về hiệu suất, bạn có thể quay lại giao diện Joda)
Từ 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
và scala.concurrent.duration._
. Đã sử dụng JodaTime đơn giản thay vào đó và viết xe đạp riêng trên nó.
Nếu bạn đang sử dụng Java 8, thì không cần phải sử dụng nscala
nữa. Thư viện Joda-Time đã được chuyển vào Java 8 theo java.time
gói (JSR-310). Chỉ cần nhập gói đó vào dự án Scala của bạn.
Không có cách tiêu chuẩn để làm việc với ngày trong Scala. Các tùy chọn có sẵn là:
Tôi sẽ tránh sử dụng java.util.Date do các vấn đề được ghi chép rõ ràng xung quanh nó.
ĐỘNG LỰC:
Các thư viện Ngày và Lịch Java phần lớn không đầy đủ. Chúng có thể thay đổi, không an toàn cho chủ đề và rất bất tiện khi sử dụng.
Thư viện Joda Time là sự thay thế tuyệt vời cho các lớp Ngày và Lịch của Java. Theo mặc định, chúng không thay đổi, có API phong phú và đẹp hơn nhiều và có thể dễ dàng được chuyển đổi thành các lớp Ngày và Lịch của Java khi cần thiết.
Dự án này cung cấp một lớp mỏng tiện lợi xung quanh các thư viện Joda Time, khiến chúng trở nên dễ sử dụng hơn trong Scala.
(được sao chép từ https://github.com/jorgeortiz85/scala-time )