2013-03-11 5 views

Antwort

83

Java Date zu Joda DateTime konvertieren: -

Date date = new Date(); 
DateTime dateTime = new DateTime(date); 

Und umgekehrt: -

Date dateNew = dateTime.toDate(); 

Mit TimeZone, bei Bedarf: -

DateTime dateTimeNew = new DateTime(date.getTime(), timeZone); 
Date dateTimeZone = dateTime.toDateTimeAtStartOfDay(timeZone).toDate(); 
+5

Ihre Konvertierung in 'DateTime' verwendet die Standardzeitzone des Systems - Sie sollten das explizit sagen. Und Ihre Konvertierung, die * eine * Zeitzone verwendet, nimmt den Beginn des Tages, was eine IMO ist, eine ungerade Wahl. Eine 'DateTime' kennt die Zeitzone bereits *, also ist es seltsam, sie zu ändern - es ist viel sinnvoller, die Zone anzugeben, wenn * von *' Date' * in * 'DateTime' konvertiert wird. –

+2

Vielen Dank an euch alle – Time

+0

'java.utiL.Date' weiß eigentlich nichts über eine 'java.util.TimeZone'. Also müssen Sie die 'TimeZone' in einer separaten Variable ablegen, wenn Sie sie auch brauchen:' TimeZone zone = dateTime.getZone(). ToTimeZone(); ' – bowmore

0

von Java Datum Wandeln an zu Joda Zeitpunkt des Datums:
Um von Date zu DateTime zu konvertieren, muss die Zeitzone angegeben werden.
Um von java.util Date in Joda Time of Date zu konvertieren, müssen Sie nur die java.util Datums- und Zeitzone an den Konstruktor von Joda Time of Date übergeben.

java.util.Date date = new java.util.Date(System.currentTimeMillis()); 
DateTimeZone dtz = DateTimeZone.getDefault();// Gets the default time zone. 
DateTime dateTime = new DateTime(date.getTime(), dtz); 

Um von Joda Zeit Date Java Date zu Konvertieren:
Für den umgekehrten Fall Joda Datetime ein Verfahren hat toDate() die das java.util Datum zurück.

DateTime jodaDate = new DateTime(); 
java.util.Date date = jodaDate.toDate(); 

für mehr Details Visit Here

6

Sie haben nicht die Art innerhalb Joda Zeit angegeben Sie interessiert sind, aber:

Instant instant = ...; 
Date date = instant.toDate(); 
instant = new Instant(date); 
// Or... 
instant = new Instant(date.getTime()); 

Weder Date noch Instant sind Zeitzonen im Zusammenhang, Es ist also nicht notwendig, hier einen anzugeben.

Es macht keinen Sinn, aus LocalDateTime/LocalDate/LocalTime zu Date (oder umgekehrt) umzuwandeln, wie das von der Zeitzone aufgebracht wird, abhängen.

Mit DateTime Sie - ein Date ohne Angabe der Zeitzone umwandeln kann, sondern von Date zu DateTime sollten Sie die Zeitzone angeben, oder es wird verwenden, um die System-Standard-Zeitzone zu konvertieren. (Wenn Sie wirklich mögen, dass, würde ich es explizit angeben, um deutlich zu machen, dass es eine bewusste Entscheidung.)

Zum Beispiel:

DateTimeZone zone = DateTimeZone.forID("Europe/London"); 
Date date = ...; 
DateTime dateTime = new DateTime(date.getTime(), zone); 
+0

' LocalTime' hilft wirklich bei der Vereinfachung von Code bei der Interaktion mit 'java.util.Date' und bei Tests. Vielen Dank. –