Konvertieren Sie von java.util.date nach JodaTime

249

Ich möchte ein konvertieren , java.util.Dateum JodaTimeso auszuführen Subtraktionen zwischen Daten so. Gibt es eine gute, präzise Möglichkeit, von Datezu konvertieren JodaTime?

Krt_Malta
quelle

Antworten:

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

Stellen Sie sicher , dass dies datenicht der nullFall ist, da es sich sonst so verhält new DateTime()- das gefällt mir wirklich nicht.

Skaffman
quelle
9
Also im Grunde:DateTime dateTime = date==null?null:new DateTime(date);
Joeri Hendrickx
121
+1 für "sonst verhält es sich wie neues DateTime () - das gefällt mir wirklich nicht."
Reevesy
1
@BabajidePrince No; dann würden Sie den gleichen Wert wie new DateTime (null) erhalten, genau das wollten wir vermeiden. Der Ausdruck soll null als null beibehalten, was in den meisten Situationen sinnvoll ist.
Joeri Hendrickx
4
Beachten Sie, dass Java Date TimeZone-unabhängig ist, während Joda DateTime über eine Chronologie verfügt.
Cristian Vrabie
1
Ja, ein oder zwei Mal, wenn null sich wie neues DateTime () verhält, ist mir ein bisschen ärgerlich ...
Buzzsawddog
13

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

Jede datetime-Klasse bietet eine Vielzahl von Konstruktoren. Dazu gehört der Objektkonstruktor. Auf diese Weise können Sie beispielsweise DateTime aus den folgenden Objekten erstellen:

* Date - a JDK instant
* Calendar - a JDK calendar
* String - in ISO8601 format
* Long - in milliseconds
* any Joda-Time datetime class
Heiden
quelle
16
@skaffman Wenn Sie Nulldaten vermeiden möchten, können Sie stattdessen date.getTime () verwenden. Sie würden jedoch eine Nullzeigerausnahme erhalten, die möglicherweise besser ist als ein stillschweigender Fehler.
Heide
2
Ich frage mich, warum sie ihren Konstruktor für diese Objekte nicht einfach überladen haben.
Pieter De Bie
1
@PieterDeBie - weil das System generisch ist. Sie können Ihre eigenen Objekttypen registrieren, um eine Konvertierung von oder nach durchzuführen.
Jules