Date formatter in java 8
Habe ich eine Anforderung, wo ich Sie zu speichern Sie verschiedene Datum und Uhrzeit mit Zeitzonen.
Ich habe verwendet, ZonedDateTime von java 8 .
ZoneId zoneId = ZoneId.of("US/Eastern");
ZonedDateTime zt = ZonedDateTime.now(zoneId);
System.out.println(zt.toString());
Mein problem ist, ich möchte speichern Sie diese in java.util.Datum-format.
Ich verwendet DateTimeFormatter -
DateTimeFormatter dtf=DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZ");
dtf.format(zt);
Bis hier ist es gut funktioniert, das gibt mir das gewünschte Datum im string-format, wenn ich jetzt versuche zu konvertieren, das auf java.util.Datum mit einfachen Datum-format
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
System.out.println(sdf.parse(dtf.format(zt)));
Bekomme ich die Ausgabe als Sat Mar 12 00:44:10 TRITT 2016, aber ich möchte die Ausgabe als 2016-03-11T14:14:10-05:00 in java.util.Date-Typ. Kann jemand empfehlen, wo mache ich falsch?
- Derzeit die Sie aufrufen
Date.toString()
in der letzten Zeile. An diesem Punkt, Sie sind wieder zum gleichen Punkt, wie viele, viele andere Fragen - einjava.util.Date
nicht speichern einer Zeitzone oder ein format. - (Würde ich dringend vermeiden, mit
java.util.Date
, wenn Sie nur können - nutzen Sie diejava.time
Arten so weit wie Sie können.) - Warum
Date
wenn Sie Java 8?
Du musst angemeldet sein, um einen Kommentar abzugeben.
ZonedDateTime > Instant - > Datum
Besten zu vermeiden, das alte Datum-Zeit-Klassen wie java.util.Datum. Aber wenn Sie müssen, können Sie konvertieren. Rufen Sie die neue
aus
Methode auf dem alten java.util.Datum Klasse.Dafür brauchen Sie eine
Instant
einen moment auf der Zeitachse in UTC.Gehen in die andere Richtung:
Sie verwenden einen falschen Weg, dies ist der korrigierte code
sdf.format(sdf.parse(val)) das der richtige Weg ist.
java.util.Date
NICHT tragen keine format-Informationen. Die kanonische Ausgabe seiner MethodetoString()
können nicht konfiguriert werden, um ein anderes format.