Почему 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 года и не включает это исправление.