Javascript Date.parse方法无法正常工作

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

它是如何将其解析为实际日期的?

nic*_*k_w 3

这种行为在不同浏览器中并不一致。在 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 年。