วิธีมาตรฐานในการทำงานกับวันที่และเวลาในสกาล่าคืออะไร ฉันควรใช้ประเภท Java เช่น java.util.Date หรือมีทางเลือก Scala ดั้งเดิมหรือไม่
วิธีมาตรฐานในการทำงานกับวันที่และเวลาในสกาล่าคืออะไร ฉันควรใช้ประเภท Java เช่น java.util.Date หรือมีทางเลือก Scala ดั้งเดิมหรือไม่
คำตอบ:
จาก Java SE 8 เป็นต้นไปผู้ใช้จะถูกขอให้ย้ายไปยัง java.time (JSR-310) มีความพยายามในการสร้างห้องสมุดสกาล่า java.time ห่อสำหรับสกาล่าเช่นสกาล่าเวลา หากการกำหนดเป้าหมายต่ำกว่า SE 8 ให้ใช้วิธีใดวิธีหนึ่งต่อไปนี้ ดูเพิ่มเติมที่ทำไม JSR-310 ไม่ใช่ Joda-Time
เสื้อคลุม Scala ใหม่สำหรับ Joda เวลา โครงการนี้แยกจากเวลาสกาล่าเนื่องจากดูเหมือนว่าเวลาสกาล่าจะไม่ได้รับการบำรุงรักษาอีกต่อไป
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 เวลาที่ดี Java ห้องสมุดมี Scala เสื้อคลุม / นัยใช้ได้ห้องสมุดการแปลงสำหรับ Joda เวลาที่สกาล่าเวลาที่สร้างขึ้นโดยJorge ออร์ติซ (หมายเหตุนัยมีการเข้าชมประสิทธิภาพ แต่ขึ้นอยู่กับสิ่งที่คุณทำถ้าคุณจะสังเกตเห็นและถ้าคุณพบปัญหาประสิทธิภาพการทำงานที่คุณสามารถย้อนกลับไปที่อินเตอร์เฟซ 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
Imports
scala.concurrent.duration._
ใช้ JodaTime ธรรมดาแทนและเขียนจักรยานของตัวเองเหนือมัน
หากคุณกำลังใช้ Java 8 แสดงว่าไม่จำเป็นต้องใช้nscala
อีกต่อไป ไลบรารี Joda-Time ถูกย้ายไปยัง Java 8 ภายใต้java.time
แพ็คเกจ (JSR-310) เพียงนำเข้าแพ็คเกจนั้นไปยังโครงการ Scala ของคุณ
ไม่มีวิธีมาตรฐานในการทำงานกับเดทในสกาลา ตัวเลือกที่ใช้ได้คือ:
ฉันจะหลีกเลี่ยงการใช้ java.util.Date เนื่องจากปัญหาที่มีเอกสารอย่างดีล้อมรอบ
แรงจูงใจ:
ไลบรารี Java Date และ Calendar ส่วนใหญ่ไม่เพียงพอ พวกเขาจะไม่แน่นอนไม่ปลอดภัยเธรดและไม่สะดวกในการใช้
ไลบรารี Joda Time เป็นสิ่งทดแทนที่ยอดเยี่ยมสำหรับคลาสวันที่และปฏิทินของ Java พวกมันไม่เปลี่ยนรูปโดยค่าเริ่มต้นมี API ที่สมบูรณ์ยิ่งขึ้นและดีกว่าและสามารถแปลงเป็นคลาส Date และ Calendar ของ Java ได้อย่างง่ายดายเมื่อจำเป็น
โครงการนี้มอบความสะดวกสบายบางชั้นรอบห้องสมุด Joda Time ทำให้พวกเขาใช้สำนวนได้ง่ายขึ้นภายใน Scala
(คัดลอกมาจากhttps://github.com/jorgeortiz85/scala-time )
ทุกคนใช้ JodaTime ห้องสมุดผู้ช่วย / ผู้ห่อหุ้ม Scala เหล่านี้อาจต้องรวบรวมใหม่ด้วย Scala เวอร์ชันใหม่ Jodatime เป็นห้องสมุดเวลาเพียงแห่งเดียวที่มีมานานและมีเสถียรภาพและทำงานได้อย่างน่าเชื่อถือกับ Scala ทุกรุ่น