Heim > Java > javaLernprogramm > Hauptteil

Wie kann ich Datumsangaben mit dem \'Z\'-Literal in Java mithilfe von SimpleDateFormat korrekt analysieren?

Patricia Arquette
Freigeben: 2024-11-04 02:26:02
Original
1003 Leute haben es durchsucht

How to Correctly Parse Dates with 'Z' Literal in Java using SimpleDateFormat?

SimpleDateFormat analysiert Datum mit „Z“-Literal

Beim Versuch, ein Datum im ISO 8601-Format mit SimpleDateFormat zu analysieren, schlägt die korrekte Analyse möglicherweise fehl Behandeln Sie das Literal „Z“, das UTC als bevorzugten Referenzpunkt angibt. Beispielsweise führt das Parsen der Zeichenfolge „2010-04-05T17:16:00Z“ mit dem Muster „yyyy-MM-dd'T'HH:mm:ss“ zu einer falschen Ortszeit.

Die Herkömmliche Muster „yyyy-MM-dd'T'HH:mm:ssz“ und „yyyy-MM-dd'T'HH:mm:ssZ“ reichen ebenfalls nicht aus, um Datumsangaben mit dem „Z“-Literal zu analysieren. Dieses Verhalten mag kontraintuitiv erscheinen, da das „Z“-Literal explizit UTC angibt.

Lösung

Vor Java 7 war für das Parsen von Datumsangaben mit dem „Z“-Literal eine explizite Einstellung erforderlich die TimeZone für das SimpleDateFormat-Objekt. In Java 7 und höher kann jedoch das Muster „yyyy-MM-dd'T'HH:mm:ssX“ verwendet werden, um das UTC-Zeitzonensuffix korrekt zu analysieren und anzuwenden.

Zum Beispiel:

<code class="java">SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssX");
Date date = sdf.parse("2010-04-05T17:16:00Z");</code>
Nach dem Login kopieren

Dadurch wird das Datum korrekt als UTC-Zeit analysiert.

Alternative

Eine weitere Alternative ist die Verwendung des in Java 8 eingeführten Pakets java.time , das eine modernere und umfassendere Datums- und Uhrzeit-API bietet. Der folgende Code demonstriert die Verwendung von java.time zum Analysieren des Datums:

<code class="java">import java.time.Instant;
import java.time.ZonedDateTime;

String dateString = "2010-04-05T17:16:00Z";
Instant instant = Instant.parse(dateString);
ZonedDateTime zonedDateTime = instant.atZone(ZoneId.of("Z"));</code>
Nach dem Login kopieren

Dieser Ansatz macht komplexe Muster oder explizite Zeitzoneneinstellungen überflüssig, da java.time nativ UTC-Zeitzonen verarbeitet.

Das obige ist der detaillierte Inhalt vonWie kann ich Datumsangaben mit dem \'Z\'-Literal in Java mithilfe von SimpleDateFormat korrekt analysieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage