Heim >Java >javaLernprogramm >Warum zeigt SimpleDateFormat('yyyy-MM-dd'T'HH:mm:ss'Z'') IST anstelle von UTC an und wie kann ich das Problem beheben?
SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'") Problem: Anzeige der IST-Zeitzone
In Java können Sie mit der SimpleDateFormat-Klasse Datumsangaben nach einem vordefinierten Muster formatieren und analysieren. Bei Verwendung des Musters „yyyy-MM-dd'T'HH:mm:ss'Z'“ wird erwartet, dass es ein Datum und eine Uhrzeit in der UTC-Zeitzone darstellt. Beim Parsen einer solchen Zeichenfolge tritt jedoch ein Problem auf.
Beachten Sie den folgenden Code:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); Date date = sdf.parse("2013-09-29T18:46:19Z"); System.out.println(date);
Die erwartete Ausgabe wäre ein Datum und eine Uhrzeit in der UTC-Zeitzone. Viele Benutzer haben jedoch berichtet, dass stattdessen Datum und Uhrzeit in der Zeitzone IST (Indian Standard Time) angezeigt werden. Dies führt zu Verwirrung und falscher Datumsverarbeitung.
Lösung: Legen Sie die Zeitzone explizit fest
Das Problem tritt auf, weil der SimpleDateFormat-Konstruktor nur das Datumsmuster initialisiert, aber nicht festlegt Zeitzone explizit angeben. Um dies zu korrigieren, müssen Sie die Zeitzone manuell auf UTC einstellen. So machen Sie es:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); sdf.setTimeZone(TimeZone.getTimeZone("GMT")); Date date = sdf.parse("2013-09-29T18:46:19Z"); System.out.println(date);
Durch Festlegen der Zeitzone auf GMT interpretiert der SimpleDateFormat-Parser die Eingabezeichenfolge korrekt und zeigt Datum und Uhrzeit in der erwarteten UTC-Zeitzone an.
Das obige ist der detaillierte Inhalt vonWarum zeigt SimpleDateFormat('yyyy-MM-dd'T'HH:mm:ss'Z'') IST anstelle von UTC an und wie kann ich das Problem beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!