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.