Heim >Java >javaLernprogramm >Wie analysiert man ISO 8601-Daten mit fehlendem Doppelpunkt im Offset in Java 8?
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.
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" )
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
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-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!