Wie man ZoneDateTime
von einer Zeichenfolge parst, die zone
und andere Felder nicht enthält?
Hier ist Test in Spock zu reproduzieren:
%Vor%Erste zwei Tests bestanden, alle anderen mit DateTimeParseException:
Wie kann ich unvollständige Daten mit Zeit und Zone, die auf den Standardwert eingestellt sind, analysieren?
Da der ISO_ZONED_DATE_TIME
Formatierer Zonen- oder Offset-Informationen erwartet, schlägt das Parsen fehl.
Sie müssen ein DateTimeFormatter
erstellen, das optionale Teile für die Zoneninformationen und den Zeitteil enthält.
Es ist nicht zu hart Reverse Engineering der ZonedDateTimeFormatter
und optionale Tags hinzufügen.
Dann parst du die String
mit der Methode parseBest()
des Formatierungsprogramms. Dann können Sie für suboptimale Analyseergebnisse den ZonedDateTime
mit einem beliebigen Standard erstellen.
Der Formatierer hat withZone()
Methode , die aufgerufen werden kann, um die fehlende Zeitzone bereitzustellen.
Bedenke, dass es einen Fehler gab, also brauchst du 8u20 oder später, damit es vollständig funktioniert.