Spiele in groovyConsole mit DateTimeFormatter und DateTimeFormatterBuilderDateTimeFormatterBuilder Parsing Tage unter 31 SMART nicht UNABHäNGIGER wenn appendValueReduced verwendet wird
String inputDateString = "31.2.58" // german date format
dtfIn = DateTimeFormatter
.ofPattern ("d.M.uu")
.withResolverStyle (ResolverStyle.STRICT)
dtfIn.parse(inputDateString) // ERROR as expected
... aber
// with base range 1937-2034
dtfIn = new DateTimeFormatterBuilder()
.appendPattern("d.M.")
.appendValueReduced(ChronoField.YEAR, 2, 2, Year.now().getValue() - 80)
.parseStrict()
.toFormatter()
dtfIn.parse(inputDateString) // Result: 1958-02-28
So DateTimeFormatterBuilder mit .parseStrict() würde analysiert eher SMART, was DateTimeFormatterBuilder überhaupt nicht tun sollte, aber entweder STRICT oder LENIENT (?) '
Mit Tageszahlen über 31 werde ich Erhalte einen Fehler.
Das Problem scheint zu sein .appendValueReduced(). Ohne würde ich ein Fehler wie erwartet werden.
Was mache ich falsch?
Dank
Rawi
Dank Mikko. Ja, es funktioniert auf diese Weise. Könnten Sie bitte erklären, warum die Methode .parseStrict() nicht geholfen hat? Ich dachte, dass es dem DateTimeFormatterBuilder genau das sagen würde. – rawi