Nad*_*edr 6 javascript date date-parsing
我正在使用一种方法来检查我的应用程序中的日期是否有效
myApp.isValidDate = function(date) {
var timestamp;
timestamp = Date.parse(date);
if (isNaN(timestamp) === false) {
return true;
}
return false;
};
Run Code Online (Sandbox Code Playgroud)
它在大多数情况下都能正常工作,但是当我输入类似"something.com Eq Phone 1"
Date.parse返回的值并返回978300000000
方法时true
它是如何将其解析为实际日期的?
这种行为在不同浏览器中并不一致。在 IE9 和 FireFox 中,Nan
正确返回,但在 Chrome 中,它似乎认为something.com Eq Phone 1
是 2001 年 1 月 1 日。
我自己没有使用过这个库,但为什么不看看DateJS呢?我复制something.com Eq Phone 1
到他们的演示中,但它没有产生有效的日期。
编辑:
至于为什么会出现这种情况,查看Chromium的日期解析源代码,我们可以看到这些注释:
第一个数字之前的任何无法识别的单词都将被忽略。
和
MM 和 DD 如果缺失则默认为 01
mm、ss 和 sss 如果缺失则默认为 00
这可以解释为什么它能够(基本上)将数字 1 转换为有效日期。
编辑2:
因此为了澄清,中的数字something.com Eq Phone 1
似乎表示月份。例如,将 更改1
为 a3
表示 2001 年 3 月 1 日。
现阶段我找不到任何确凿的证据表明年份默认为 2001 年。