Heim >Java >javaLernprogramm >Wie analysiert man ISO 8601-Daten mit fehlendem Doppelpunkt im Offset in Java 8?

Wie analysiert man ISO 8601-Daten mit fehlendem Doppelpunkt im Offset in Java 8?

Linda Hamilton
Linda HamiltonOriginal
2024-11-02 21:30:30500Durchsuche

How to Parse ISO 8601 Dates with Missing Colon in Offset in Java 8?

Parsen von Daten im ISO 8601-Format ohne Doppelpunkt im Offset

Problem

DateTimeFormatter von Java 8 hat Probleme beim Parsen von ISO 8601-Zeichenfolgen ohne Doppelpunkt zwischen Stunden und Minuten im Offset, was zu Schwierigkeiten für Benutzer führt, die versuchen, Zeichenfolgen wie „2018-02-13T10:20:12.120 0000“ in Java 8-Daten umzuwandeln.

Lösung

Bis Java 8 Fehlerbehebung:

Bis der Fehler in Java 8 behoben ist, verwenden Sie die folgende Problemumgehung:

OffsetDateTime.parse( 
    "2018-02-13T10:20:12.120+0000" , 
    DateTimeFormatter.ofPattern( "uuuu-MM-dd'T'HH:mm:ss.SSSX" )
)

Nach der Fehlerbehebung in Java 8:

OffsetDateTime.parse( "2018-02-13T10:20:12.120+0000" )

Detaillierte Erklärung

Falsche Klassenverwendung

Vermeiden Sie die Verwendung älterer Klassen wie Date, Calendar und SimpleDateFormat zugunsten moderner java.time-Klassen.

Verwenden Sie OffsetDateTime für Nur-Offset-Werte

Für Werte mit Offsets, aber ohne Zeitzone verwenden Sie OffsetDateTime. ISO 8601-Zeichenfolgen entsprechen normalerweise den von java.time-Klassen verwendeten Standardformaten. Ein Fehler in Java 8 erfordert jedoch eine Problemumgehung:

Hacky Workaround

Manipulieren Sie die Eingabezeichenfolge so, dass sie den fehlenden Doppelpunkt enthält:

String input = "2018-02-13T10:20:12.120+0000".replace( "+0000" , "+00:00" );
OffsetDateTime odt = OffsetDateTime.parse( input );

Robustere Problemumgehung

Definieren Sie einen DateTimeFormatter mit einem expliziten Muster:

String input = "2018-02-13T10:20:12.120+0000" ;
DateTimeFormatter f = DateTimeFormatter.ofPattern( "uuuu-MM-dd'T'HH:mm:ss.SSSX" );
OffsetDateTime odt = OffsetDateTime.parse( input , f );

Zusätzliche Überlegungen

  • Immer Verwenden Sie Offsets mit einem Doppelpunkt sowie Stunden und Minuten.
  • Extrahieren Sie Instant-Objekte, um Werte in UTC darzustellen.
  • Wenden Sie Zeitzonen an, um Momente durch die Linse der Wanduhrzeit bestimmter Regionen zu betrachten.

Über den Java 8-Fehler

Der Java 8-Fehler beeinträchtigt das Parsen von Offsets, bei denen der Doppelpunkt zwischen Stunden und Minuten fehlt. Dieses Problem betrifft Offsets wie 0000, aber nicht 00:00.

Java.time

java.time-Klassen ersetzen ältere Datumsklassen und sind in Java 8 und höher integriert. Sie bieten modernere und effizientere Funktionen zur Datums-/Uhrzeitverarbeitung.

Das obige ist der detaillierte Inhalt vonWie analysiert man ISO 8601-Daten mit fehlendem Doppelpunkt im Offset in Java 8?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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