У меня есть простая проблема: я хочу строго разбирать строки 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
для решения моего простого варианта использования?