82

我有这个问题......我没有发现任何类似的东西,而且似乎很奇怪没有人在使用 moment.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/

4

2 回答 2

185

在您的问题中,您写的是moment('03:55jojojo', 'HH:mm',true).isValid();返回 true。这是不正确的。请再次检查您的 jsfiddle。

来自http://momentjs.com/docs/

Moment 的解析器非常宽容,这可能会导致不良行为。从 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);
于 2013-11-14T14:05:46.683 回答
2

很抱歉解决了这个 5 年前的问题,但我确实偶然发现了 monent 使用 2.24.0 版本无法正常处理文档的情况。

格式

在图片中,我们可以看到 exampleH应该只评估为0 - 23,但如果我使用moment('01', 'H', true).isValid()我仍然得到true

这是jsfiddle:https ://jsfiddle.net/wofgst5v/

于 2019-10-11T09:58:55.260 回答