DateTimeFormatterBuilder с указанными конфликтами parseDefaulting для поля YEAR
У меня есть следующий форматер:
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.appendPattern("yyyyMM")
.parseDefaulting(ChronoField.SECOND_OF_MINUTE, 0)
.parseDefaulting(ChronoField.MINUTE_OF_HOUR, 0)
.parseDefaulting(ChronoField.HOUR_OF_DAY, 0)
.parseDefaulting(ChronoField.DAY_OF_MONTH, 1)
.parseDefaulting(ChronoField.MONTH_OF_YEAR, 1)
.parseDefaulting(ChronoField.YEAR, ZonedDateTime.now().getYear())
.toFormatter()
.withZone(ZoneId.systemDefault());
Я пытаюсь разобрать строку "201505"
System.out.println(ZonedDateTime.parse("201505", formatter));
и это бросает исключение:
Вызвано: java.time.DateTimeException: обнаружен конфликт: год 2016 отличается от года 2015
Это работает, если я закомментирую установку значения по умолчанию для ГОДА.
Насколько я понял документация, он должен пытаться заменить значение по умолчанию, только если не проанализировано значение. Похоже, это работает в течение месяца, так как у меня месяц, отличный от проанализированного по умолчанию. Однако это не работает в течение года.
Я использую это неправильно, может кто-то сказать мне, если есть другой способ определить значения по умолчанию для полей, которые могут отсутствовать в шаблоне?