Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Date.parse方法无法正常工作_Javascript_Date_Date Parsing - Fatal编程技术网

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