Chuyển đổi từ java.util.date sang JodaTime


249

Tôi muốn chuyển đổi một java.util.Dateđể JodaTimeđể thực hiện phép trừ giữa các ngày. Có một cách ngắn gọn tốt để chuyển đổi từ Datesang JodaTime?

Câu trả lời:


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

Hãy chắc chắn datelà không null, tuy nhiên, nếu không nó hoạt động như new DateTime()- Tôi thực sự không thích điều đó.


9
Về cơ bản:DateTime dateTime = date==null?null:new DateTime(date);
Joeri Hendrickx

121
+1 cho "nếu không thì nó hoạt động như DateTime mới () - Tôi thực sự không thích điều đó."
thiệu

1
@BabajidePrince Không; sau đó, bạn sẽ nhận được cùng một giá trị như DateTime mới (null), đó chính xác là những gì chúng tôi muốn tránh. Biểu thức có nghĩa là duy trì null là null, đó là điều có ý nghĩa trong hầu hết các tình huống.
Joeri Hendrickx

4
Xin lưu ý rằng Ngày Java là TimeZone độc ​​lập trong khi Joda DateTime có Thời gian.
Cristian Vrabie

1
Có, một hoặc hai lần nếu null hành động như DateTime () mới gây cho tôi một chút lo lắng ...
buzzsawddog

13

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

Mỗi lớp datetime cung cấp một loạt các hàm tạo. Chúng bao gồm các hàm tạo đối tượng. Điều này cho phép bạn xây dựng, ví dụ, DateTime từ các đối tượng sau:

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

16
@skaffman nếu bạn muốn tránh ngày null, bạn có thể sử dụng date.getTime (). Bạn sẽ nhận được một ngoại lệ con trỏ null, tuy nhiên điều đó có thể tốt hơn là thất bại âm thầm.
Heathen

2
Tôi tự hỏi tại sao họ không quá tải công cụ xây dựng của họ cho các đối tượng đó.
Pieter De Bie

1
@PieterDeBie - vì hệ thống này là chung chung. Bạn có thể đăng ký các loại đối tượng của riêng bạn để có chuyển đổi đến hoặc từ.
Jules
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.