แปลงจาก java.util.date เป็น JodaTime


249

ฉันต้องการที่จะแปลงjava.util.DateไปJodaTimeเพื่อที่จะดำเนินการระหว่างวันที่ subtractions มีวิธีที่รัดกุมดีในการแปลงจากDateไปJodaTime?

คำตอบ:


478
java.util.Date date = ...
DateTime dateTime = new DateTime(date);

ตรวจสอบให้แน่ใจdateไม่ได้nullแต่อย่างอื่นก็ทำหน้าที่เหมือนnew DateTime()- ฉันจริงๆไม่ชอบที่


9
โดยพื้นฐานแล้ว:DateTime dateTime = date==null?null:new DateTime(date);
Joeri Hendrickx

121
+1 สำหรับ "ไม่เช่นนั้นจะทำหน้าที่เหมือน DateTime ใหม่ () - ฉันไม่ชอบสิ่งนั้นจริง ๆ "
reevesy

1
@BabajidePrince No; จากนั้นคุณจะได้รับค่าเช่นเดียวกับ DateTime ใหม่ (null) ซึ่งเป็นสิ่งที่เราต้องการหลีกเลี่ยง การแสดงออกมีไว้เพื่อรักษาโมฆะเป็นโมฆะซึ่งเป็นสิ่งที่สมเหตุสมผลในสถานการณ์ส่วนใหญ่
Joeri Hendrickx

4
โปรดทราบว่า Java Date เป็นเขตเวลาอิสระในขณะที่ Joda DateTime มีลำดับเหตุการณ์
Cristian Vrabie

1
ใช่สองสามครั้งถ้าโมฆะทำตัวเหมือน DateTime ใหม่ () ทำให้ฉันรู้สึกรำคาญนิดหน่อย ...
buzzsawddog

13

http://joda-time.sourceforge.net/quickstart.html

แต่ละคลาสของ datetime มีคอนสตรัคเตอร์ที่หลากหลาย เหล่านี้รวมถึงตัวสร้างวัตถุ สิ่งนี้ช่วยให้คุณสามารถสร้างตัวอย่างเช่น DateTime จากวัตถุต่อไปนี้:

* Date - a JDK instant
* Calendar - a JDK calendar
* String - in ISO8601 format
* Long - in milliseconds
* any Joda-Time datetime class

16
@skaffman หากคุณต้องการหลีกเลี่ยงวันที่ว่างคุณสามารถใช้ date.getTime () แทน คุณจะได้รับข้อยกเว้นตัวชี้โมฆะอย่างไรก็ตามอาจดีกว่าความล้มเหลวอย่างเงียบ ๆ
Heathen

2
ฉันสงสัยว่าทำไมพวกเขาไม่เพียงแค่สร้างคอนสตรัคเตอร์ให้กับวัตถุเหล่านั้นมากเกินไป
Pieter De Bie

1
@PieterDeBie - เนื่องจากระบบเป็นแบบทั่วไป คุณสามารถลงทะเบียนประเภทวัตถุของคุณเองเพื่อแปลงเป็นหรือจาก
จูลส์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.