Почему moment.js позволяет использовать дату с одной цифрой года при строгом разборе?

Я использую moment.js для разбора даты. http://momentjs.com/docs/

Это делается для проверки и преобразования даты в формат, требуемый моей базой данных. В моем тестировании я встретил эту входную дату "6-4-3", которая не должна быть действительной в данном формате.

moment('6-4-3','YYYY-MM-DD',true).isValid(); //returns true

Полученная в данный момент дата объекта - "Пн Апр 03 0006 ...". Когда я вызываю isValid, он возвращает true. Я думаю, что это должно считать эту дату недействительной, потому что она имеет слишком мало цифр на входе для каждой части строки формата.

Я добавил regex.test в свой код, чтобы убедиться, что даты имеют правильное количество цифр, но я думаю, что это нужно обрабатывать по-разному в moment.js, когда для параметра strict установлено значение true.

Есть что-то, чего я здесь не хватает? Разве это не точка строгого разбора? Или есть причина, почему это предполагаемое поведение?

1 ответ

Решение

Это было известной проблемой для прошлых версий Moment.js: YYYY-MM-DD с трехзначным значением года возвращает true для isValid ().

Это было исправлено в декабре 2013 года, и ваш код работает, как и ожидалось, с самой последней версией библиотеки. Версия 2.3.1 была выпущена в октябре 2013 года и не включает это исправление.

Другие вопросы по тегам