Ist es möglich, das zu tun? Wenn ja, wie mache ich die Konvertierung von Joda-Time zu Date und umgekehrt?Wie konvertiert man Joda-Time DateTime in java.util.Date und umgekehrt?
Antwort
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();
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. –
Vielen Dank an euch alle – Time
'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
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
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);
' LocalTime' hilft wirklich bei der Vereinfachung von Code bei der Interaktion mit 'java.util.Date' und bei Tests. Vielen Dank. –
Haben Sie Joda gesehen [Datetime-Konstrukteuren] (http: //joda-time.sourceforge.net/apidocs/org/joda/time/DateTime.html#DateTime%28long%29)? Gibt es einen, der deiner Meinung nach angemessen sein könnte? – vikingsteve