Функция moment.js isValid не работает должным образом

У меня есть этот вопрос... Я не нашел ничего похожего, и также кажется очень странным, что никто не имел этой проблемы, проверяющей время с помощью момента .js.

moment('03:55', 'HH:mm').isValid(); //true
moment('03:55jojojo', 'HH:mm').isValid(); //true
moment('03:55jojojo', 'HH:mm',true).isValid(); //true

Я что-то делаю неправильно? Вот пример:

http://jsfiddle.net/vCGAp/145/

Ответ 1

В вашем вопросе вы пишете, что moment('03:55jojojo', 'HH:mm',true).isValid(); возвращает true. Это неверно. Пожалуйста, снова проверьте свой jsfiddle.

Из http://momentjs.com/docs/

Moment parser очень прощает, и это может привести к нежелательным поведение. Начиная с версии 2.3.0, вы можете указать логическое значение для последнего аргумент, чтобы заставить Moment использовать строгий синтаксический анализ. Строгий анализ требует что формат и ввод соответствуют точно.

moment('It is 2012-05-25', 'YYYY-MM-DD').isValid();        // true
moment('It is 2012-05-25', 'YYYY-MM-DD', true).isValid();  // false
moment('2012-05-25', 'YYYY-MM-DD', true).isValid();        // true

Вы можете использовать язык и строгость.

moment('2012-10-14', 'YYYY-MM-DD', 'fr', true);

Ответ 2

Извините за этот 5-летний вопрос, но я действительно наткнулся на случай, когда monent не работает должным образом с документацией, используя версию 2.24.0.

Formats

На рисунке мы видим, что, например, H должен оценивать только 0 - 23, но если я использую moment('01', 'H', true).isValid(), я все равно получаю true.

Вот jsfiddle: https://jsfiddle.net/wofgst5v/