Функция 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/