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?

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.


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

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.