Wie zerlege ich ZoneDateTime mit der Standardzone?

7

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:

  • '2014-04-23T04: 30: 45.123' konnte nicht am Index 23 analysiert werden
  • '2014-04-23T04: 30' konnte nicht bei Index 16
  • analysiert werden
  • '2014-04-23' konnte nicht bei Index 10
  • analysiert werden

Wie kann ich unvollständige Daten mit Zeit und Zone, die auf den Standardwert eingestellt sind, analysieren?

    
stokito 04.12.2014, 12:22
quelle

2 Antworten

11

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.

%Vor%     
bowmore 06.12.2014, 12:14
quelle
9

Der Formatierer hat withZone() Methode , die aufgerufen werden kann, um die fehlende Zeitzone bereitzustellen.

%Vor%

Bedenke, dass es einen Fehler gab, also brauchst du 8u20 oder später, damit es vollständig funktioniert.

    
JodaStephen 04.12.2014 13:47
quelle

Tags und Links