Chrome会返回字符串" FY 2000"的有效日期。而不是无效的日期

时间:2017-08-29 05:25:23

标签: javascript google-chrome date

Chrome会返回字符串生效日期" FY 2000"当其他浏览器正确返回"无效日期"

时,而不是无效日期

小提琴链接:https://jsfiddle.net/Lddr79ek/

代码:

function isDate(value)
{
    return new Date(value).toString()!= "Invalid Date");
}

这是Chrome浏览器中的一个问题吗?

修改 问题是报告的行为仅在Chrome浏览器中破坏了我们的产品。我在SO中检查了其他答案,但他们也没有使用chrome。

2 个答案:

答案 0 :(得分:1)

我不认为这是一个错误。当您使用字符串作为参数调用Date构造函数时,该字符串将通过Date.parse进行解析。

MDN说:

  

由于浏览器差异和不一致,强烈建议不要使用Date.parse解析字符串。

它还says

  

但是,日期字符串中的无效值未被识别为ECMA-262定义的简化ISO格式,可能会也可能不会产生NaN,具体取决于浏览器和提供的值,例如:

看起来当前的V8(Chrome)解析实现试图猜测,传递了什么。

供参考:

答案 1 :(得分:1)

Chrome仅解析输入字符串中的数字。

示例:

new Date('AS 2017') //Year part is parsed.
Sun Jan 01 2017 00:00:00 GMT+0300

new Date('XCNCNNC 2017') //Year part is parsed.
Sun Jan 01 2017 00:00:00 GMT+0300

new Date('FY2017') //without space. Year is not parsed.
Invalid Date