Java SimpleDateFormat ("yyyy-MM-dd'T'HH: mm: ss'Z '") gibt die Zeitzone als IST an
Ich haben " = SimpleDateFormat Konstruktor als
SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'")
und ich bin parsing string "2013-09-29T18:46:19Z".
Ich habe gelesen, dass hier Z stellt die GMT/UTC
Zeitzone. aber wenn ich drucken Sie das Datum auf der Konsole , druckt Er TRITT timezne für das zurückgegebene Datum.
Nun meine Frage ist, ob die Ausgabe richtig oder falsch?
InformationsquelleAutor der Frage Pradip Borde | 2013-10-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie haben nicht die Zeitzone nur Hinzugefügt
Z
zum Ende der Datum/Zeit, so dass Sie Aussehen wie ein GMT-Datum/Zeit, aber das ändert nichts an dem Wert.Setzen der Zeitzone auf GMT, und es wird richtig sein.
InformationsquelleAutor der Antwort Peter Lawrey
'T'
und'Z'
sind hier als Konstanten. Sie brauchen, um passierenZ
ohne die Anführungszeichen. Außerdem müssen Sie die Zeitzone in der input-string.Beispiel :
2013-09-29T18:46:19-0700
Und das format als
"yyyy-MM-dd'T'HH:mm:ssZ"
InformationsquelleAutor der Antwort Subir Kumar Sao
Von ISO-8601-String an Java-Date-Objekt
wenn Sie nicht setzen
TimeZone.getTimeZone("GMT")
dann wird es ausgegeben wirdSun Sep 29 18:46:19 CST 2013
Von Java-Date-Objekt zu ISO-8601-String
Und zu konvertieren
Date
Objekt zu ISO-8601-Standard (yyyy-MM-dd'T'HH:mm:ss'Z'
) verwenden Sie folgenden code,Beachten Sie auch, dass ohne
' '
bei Zyyyy-MM-dd'T'HH:mm:ssZ
Drucke2015-01-22T03:41:02+0000
InformationsquelleAutor der Antwort AZ_
WENN Sie behandeln möchten 'standard' JSON Darstellung des Datums dann besser, verwenden Sie diese Muster:
"yyyy-MM-dd'T'HH:mm:ssX"
.Beachten Sie die
X
am Ende. Es handle Zeitzonen in ISO-8601-standard und ISO 8601 ist genau das, was erzeugt diese Anweisung in Javascriptnew Date().toJSON()
Vergleich zu den anderen Antworten es hat einige Vorteile:
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
InformationsquelleAutor der Antwort MyTitle
Die anderen Antworten sind überholt als von Java 8.
ISO 8601
Ihre string-format geschieht, um die Einhaltung der ISO 8601 standard. Dieser standard definiert sinnvolle Formate für die Darstellung von verschiedenen Datum-Zeit-Werte als text.
java.Zeit
Den alten
java.util.Date
/.Calendar
undjava.text.SimpleDateFormat
Klassen wurden ersetzt durch java.Zeit framework in Java 8 und höher. Sehen Tutorial. Vermeiden, die alten Klassen Sie haben sich schlecht entwickelt, verwirrend und lästig.Teil des arm-design in den alten Klassen hat dich gebissen, wo die
toString
Methode gilt die JVM die aktuelle Standard-Zeitzone bei der Generierung eines text-Darstellung der Datum-Uhrzeit-Wert, der tatsächlich in UTC (GMT); gut gemeint aber verwirrend.Java.Zeit-Klassen verwenden ISO-8601-Formate, die standardmäßig beim parsing/Generierung von textuellen Darstellungen von Datum /Uhrzeit-Werte. So brauchen Sie nicht angeben eine parsing-Muster.
Einer
Instant
einen moment auf der Zeitachse,UTC.Können Sie die Zeitzone als benötigt zu produzieren,
ZonedDateTime
Objekt.InformationsquelleAutor der Antwort Basil Bourque
und wenn Sie nicht die Möglichkeit haben zu gehen auf java8 besser nutzen
'yyyy-MM-dd NICHT'HH:mm:ssXXX' wie dies wird korrekt geparst wieder (zwar nur mit einem X kann dies nicht der Fall sein... je nach Parser-Funktion)
X erzeugt: +01
XXX generiert: +01:00
InformationsquelleAutor der Antwort Thirdman