У меня есть простая проблема: я хочу строго разбирать строки Java в формате "yyyyMMdd", поэтому "19800229" является допустимой датой, но "19820229" - нет. Предположим, что это даты AD из нормального григорианского календаря.
Я пытаюсь использовать новый пакет java.time от JDK 8 для решения этой проблемы, но он оказывается более сложным, чем можно надеяться. Мой текущий код:
private static final DateTimeFormatter FORMAT = DateTimeFormatter
.ofPattern("yyyyMMdd").withChronology(IsoChronology.INSTANCE)
.withResolverStyle(STRICT);
public static LocalDate parse(String yyyyMMdd) {
return LocalDate.parse(yyyyMMdd, FORMAT);
}
Однако разбор допустимой даты, такой как "19800228", создает то, что для меня является непонятной ошибкой:
java.time.format.DateTimeParseException: текст '19820228' не может быть проанализирован: невозможно получить LocalDate из TemporalAccessor: {MonthOfYear = 2, DayOfMonth = 28, YearOfEra = 1982}, ISO типа java.time.format. Проанализированные
Как использовать java.time.format.DateTimeFormatter для решения моего простого варианта использования?