Chrome会返回字符串生效日期" FY 2000"当其他浏览器正确返回"无效日期"
时,而不是无效日期小提琴链接:https://jsfiddle.net/Lddr79ek/
代码:
function isDate(value)
{
return new Date(value).toString()!= "Invalid Date");
}
这是Chrome浏览器中的一个问题吗?
修改 问题是报告的行为仅在Chrome浏览器中破坏了我们的产品。我在SO中检查了其他答案,但他们也没有使用chrome。
答案 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