为什么在使用严格解析时,moment.js允许使用一位数年份的日期?

时间:2014-09-17 13:42:55

标签: javascript parsing date momentjs validating

我使用moment.js来解析日期。 http://momentjs.com/docs/#/parsing/string-format/

这是为了验证日期并将其转换为我的数据库所需的格式。在我的测试中,我遇到了这个输入日期' 6-4-3'对于给定的格式,它不应该有效。

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

当前对象的结果日期为" Mon Apr 03 0006 ..."。当我调用isValid时,它返回true。我认为它应该认为这个日期无效,因为它在格式字符串的每个部分的输入中的位数太少。

我在代码中添加了一个regex.test,以确保日期具有正确的位数,但我认为当strict为true时,应该在moment.js中以不同的方式处理。

我有什么东西在这里失踪吗?这不是严格解析的重点吗?或者这是为什么这是预期的行为?

1 个答案:

答案 0 :(得分:3)

这是过去版本的Moment.js的一个已知问题:YYYY-MM-DD with 3 digit year returns true for isValid()

它已于2013年12月修复,您的代码可以按照预期的最新版本的库运行。版本2.3.1 was released in October 2013并且不包括此修复程序。