Javascript Date.parse方法无法正常工作
我正在使用一种方法来检查我的应用程序中的日期是否有效Javascript Date.parse方法无法正常工作,javascript,date,date-parsing,Javascript,Date,Date Parsing,我正在使用一种方法来检查我的应用程序中的日期是否有效 myApp.isValidDate = function(date) { var timestamp; timestamp = Date.parse(date); if (isNaN(timestamp) === false) { return true; } return false; }; 它在大多数情况下都能正常工作,但当我输入值时,如“something.com Eq Phone 1”Date.parse
myApp.isValidDate = function(date) {
var timestamp;
timestamp = Date.parse(date);
if (isNaN(timestamp) === false) {
return true;
}
return false;
};
它在大多数情况下都能正常工作,但当我输入值时,如“something.com Eq Phone 1”
Date.parse返回978300000000
,方法返回true
它是如何将其解析为实际日期的?这种行为在不同浏览器中并不一致。在IE9和FireFox中,
Nan
被正确返回,但在Chrome中,它似乎认为something.com Eq Phone 1
是2001年1月1日
我自己没用过这个图书馆,但为什么不退房呢?我将something.com Eq Phone 1
复制到他们的演示中,但没有生成有效的日期
编辑:
关于为什么会发生这种情况,从铬的角度来看,我们可以看到以下评论:
忽略第一个数字之前的任何无法识别的单词
及
如果缺少,MM和DD默认为01
mm、ss和sss如果缺失,则默认为00
这就解释了为什么它能够(本质上)将数字1转换为有效日期
编辑2:
因此,为了澄清,something.com Eq Phone 1中的数字似乎表示月份。例如,将1
更改为3
将显示2001年3月1日
在这个阶段,我找不到任何确凿的证据表明这一年默认为2001年。这似乎是Chrome实现parse.date的一个怪癖,正如您在这里看到的: 只有在字符串末尾附加了一个数字时才会出现此错误,如果没有,则不会出现此错误
"something.com" is false
"something.com is invalid" is false
"something.com eq phone" is false
"something.com eq phone 1" is true
"something.com eq phone 5" is true
"anything that has one at the end 1" is true
"as long as 1 isn't earlier in the string 1" is false