编程语言
首页 > 编程语言> > javascript-使用严格解析时,moment.js为什么允许日期以一位数字表示?

javascript-使用严格解析时,moment.js为什么允许日期以一位数字表示?

作者:互联网

我正在使用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中对此进行不同的处理.

我在这里想念什么吗?这不是严格解析的重点吗?还是这是预期行为的原因?

解决方法:

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

它已在2013年12月修复,您的代码可以在该库的最新版本中正常工作.版本2.3.1 was released in October 2013,并且不包含此修复程序.

标签:validating,momentjs,javascript,parsing,date
来源: https://codeday.me/bug/20191121/2050371.html