Apa cara standar untuk bekerja dengan tanggal dan waktu di Scala? Haruskah saya menggunakan tipe Java seperti java.util.Date atau ada alternatif Scala asli?
Dari Java SE 8 dan seterusnya, pengguna diminta untuk bermigrasi ke java.time (JSR-310). Ada upaya membuat perpustakaan scala yang membungkus java.time untuk scala seperti scala-time . Jika penargetan lebih rendah dari SE 8 gunakan salah satu di bawah ini. Juga lihat Mengapa JSR-310 bukan Joda-Time
Pembungkus Scala baru untuk Joda Time . Proyek ini bercabang dari scala-time karena tampaknya scala-time tidak lagi dipertahankan.
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 adalah perpustakaan Java yang baik, ada perpustakaan Scala wrapper / implisit konversi yang tersedia untuk Joda Time pada scala-time yang dibuat oleh Jorge Ortiz . (Catatan implisit memiliki hit kinerja, tetapi itu tergantung pada apa yang Anda lakukan jika Anda akan melihat. Dan jika Anda mengalami masalah kinerja Anda bisa kembali ke antarmuka Joda)
Dari 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
danscala.concurrent.duration._
. Sebaliknya, gunakan JodaTime biasa dan menulis sepeda sendiri di atasnya.Jika Anda menggunakan Java 8, maka tidak perlu digunakan
nscala
lagi. Perpustakaan Joda-Time telah dipindahkan ke Java 8 di bawahjava.time
paket (JSR-310). Impor saja paket itu ke proyek Scala Anda.sumber
Tidak ada cara standar untuk bekerja dengan kurma di Scala. Opsi yang tersedia adalah:
Saya akan menghindari menggunakan java.util.Date karena masalah yang terdokumentasi dengan baik di sekitarnya.
sumber
MOTIVASI:
Perpustakaan Java Date dan Calendar sebagian besar tidak memadai. Mereka bisa berubah, tidak aman untuk benang, dan sangat tidak nyaman untuk digunakan.
Perpustakaan Joda Time adalah pengganti yang hebat untuk kelas Date dan Calendar Java. Mereka tidak dapat diubah secara default, memiliki API yang lebih kaya dan lebih bagus, dan dapat dengan mudah dikonversi ke kelas Tanggal dan Kalender Java bila perlu.
Proyek ini memberikan lapisan tipis kenyamanan di sekitar perpustakaan Joda Time, menjadikannya lebih idiomatis untuk digunakan dalam Scala.
(disalin dari https://github.com/jorgeortiz85/scala-time )
sumber
Semua orang menggunakan JodaTime, pustaka pembantu / pembungkus Scala ini mungkin perlu dikompilasi ulang dengan versi Scala baru. Jodatime adalah satu-satunya perpustakaan waktu yang sudah ada sejak lama, dan stabil dan berfungsi dengan baik pada setiap versi Scala.
sumber