DateTimeFormatterBuilder mit angegebenen parseDefaulting-Konflikten für das YEAR-Feld

8

Ich habe den folgenden Formatierer:

%Vor%

Ich versuche die Zeichenfolge "201505" zu analysieren

%Vor%

und es löst eine Ausnahme aus:

  

Erstellt von: java.time.DateTimeException: Konflikt gefunden: Jahr 2016   unterscheidet sich von Jahr 2015

Es funktioniert, wenn ich die Einstellung des Standardwert für JAHR auskommentiere.

Soweit ich die Dokumentation verstanden habe, sollte es nur versuchen, den Standardwert zu ersetzen, wenn kein Wert analysiert wird. Scheint so, als ob das für einen Monat funktioniert, da ich einen anderen Monat habe als den Standard, den ich geparst habe. Es funktioniert jedoch nicht für das Jahr.

Wenn ich es falsch verwende, könnte mir jemand sagen, ob es eine andere Möglichkeit gibt, Standardwerte für Felder zu definieren, die möglicherweise nicht in einem Muster vorhanden sind?

    
Ivelina Georgieva 11.07.2016, 13:08
quelle

1 Antwort

8

Das Problem ist, dass sich der Musterbuchstabe "y" auf ChronoField.YEAR_OF_ERA bezieht, nicht auf ChronoField.YEAR . Ändere einfach die letzte parseDefaulting -Zeile:

%Vor%

und es sollte funktionieren.

    
JodaStephen 11.07.2016, 15:15
quelle

Tags und Links