Как сделать строгий разбор LocalDate в js-joda?

Я пытаюсь разобрать LocalDate из String используя строгое разрешение в js-joda (версия 1.1.1). Я не хочу принимать данные, которые не являются действительными датами, например 2016-05-32, Но я просто не понимаю.

Мой код:

formatter = (new JSJoda.DateTimeFormatterBuilder)
    .appendPattern("yyyy-MM-dd")
    .toFormatter(JSJoda.ResolverStyle.STRICT);

JSJoda.LocalDate.parse("2016-05-10", formatter);

и ошибка:

Text '2016-05-10' could not be parsed: Unable to obtain LocalDate from
TemporalAccessor: [object Object], type DateTimeBuilder: 2016-05-10,
at index: 0

Тот же код с ResolverStyle.LENIENT или же ResolverStyle.SMART работает как положено для этих режимов.

formatter = (new JSJoda.DateTimeFormatterBuilder)
    .appendPattern("yyyy-MM-dd")
    .toFormatter(JSJoda.ResolverStyle.LENIENT);

JSJoda.LocalDate.parse("2016-05-32", formatter); // result 2016-06-01

Как я могу использовать строгое разрешение в js-joda?

JS Demo

Обновление:

Однако API DateTimeFormatter js-joda не упоминает эту опцию, шаблон uuuu-MM-dd Предложенный @JodaStephen работает отлично. Рабочая Js Демо

js-joda api:

 | Символ | Значение | Презентация | Примеры
 |--------|----------------------------|------------------|---------------
 | G      | эра | номер / текст | 1; 01; ОБЪЯВЛЕНИЕ; Анно Домини
 | у | год | год | 2004; 04
 | D      | день года | номер | 189
 | М | месяц года | номер / текст | 7; 07; Июль; июль; J

Java API:

 Примеры представления символов
  ------ ------- ------------ -------
   G эра текст AD; Анно Домини; 
   год 2004; 04
   год 2004 года; 04
   D день года № 189

2 ответа

Решение

Паттерн "гггг-ММ-дд" является неполным в режиме STRICT, поскольку он не обеспечивает эру. Вместо этого используйте шаблон "uuuu-MM-dd".

Вы можете просто использовать функцию LocalDate.parse без указания форматера.

LocalDate.parse('2016-05-10');  // '2016-05-10'

LocalDate.parse('2016-05-32');  // throws a DateTimeParseException
Другие вопросы по тегам