Konversi dari java.util.date ke JodaTime

249

Saya ingin mengonversi a java.util.Dateke JodaTimeuntuk melakukan pengurangan antara tanggal. Apakah ada cara ringkas yang baik untuk mengkonversi dari Dateke JodaTime?

Krt_Malta
sumber

Jawaban:

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

Tapi pastikan datetidak null, jika tidak bertindak seperti new DateTime()- Saya benar - benar tidak suka itu.

skaffman
sumber
9
Jadi pada dasarnya:DateTime dateTime = date==null?null:new DateTime(date);
Joeri Hendrickx
121
+1 untuk "jika tidak berfungsi seperti DateTime baru () - Saya benar-benar tidak suka itu."
reevesy
1
@BabajidePrince No; maka Anda akan mendapatkan nilai yang sama dengan DateTime (null) baru, yang persis apa yang ingin kami hindari. Ekspresi dimaksudkan untuk mempertahankan null sebagai null, yang merupakan hal yang masuk akal di sebagian besar situasi.
Joeri Hendrickx
4
Ketahuilah bahwa Java Date adalah TimeZone independen sedangkan Joda DateTime memiliki Kronologi.
Cristian Vrabie
1
Ya, satu atau dua waktu jika null bertindak seperti DateTime () baru membuat saya sedikit anoyingness ...
buzzsawddog
13

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

Setiap kelas datetime menyediakan berbagai konstruktor. Ini termasuk konstruktor Obyek. Ini memungkinkan Anda untuk membuat, misalnya, DateTime dari objek berikut:

* Date - a JDK instant
* Calendar - a JDK calendar
* String - in ISO8601 format
* Long - in milliseconds
* any Joda-Time datetime class
Kafir
sumber
16
@skaffman jika Anda ingin menghindari tanggal nol, Anda bisa menggunakan date.getTime (). Namun Anda akan mendapatkan pengecualian penunjuk nol yang mungkin lebih baik daripada gagal secara diam-diam.
Heathen
2
Saya bertanya-tanya mengapa mereka tidak hanya membebani konstruktor mereka untuk benda-benda itu.
Pieter De Bie
1
@PieterDeBie - karena sistemnya generik. Anda dapat mendaftarkan jenis objek Anda sendiri untuk dikonversi ke atau dari.
Jules