Firefox new Date()适用于无效日期

时间:2016-04-06 21:20:49

标签: javascript firefox

当我在Firefox控制台中运行时:

new Date('25/04/2016')

它会创建以下日期:

Date 2018-01-04T05:00:00.000Z

似乎是试图从01/04/2016添加25个月,最后到01/04/2018。这是预期的行为吗?我原以为它会导致错误,而不是试图解析荒谬的日期。

Chrome返回无效日期。

1 个答案:

答案 0 :(得分:3)

进一步澄清 - 当使用带有单个字符串参数的Date构造函数时,这相当于使用Date.parse。

来自:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse

  

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

// Non-ISO string with invalid date values
new Date('23/25/2014');
  

将被视为2015年11月25日在Firefox 30和Firefox中的当地日期   Safari 7中的日期无效。

原始答案如下:

这确实是Firefox中的预期行为。

来自:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

  

注意:如果将Date作为具有多个参数的构造函数调用,如果值大于其逻辑范围(例如,13为月值或70为分钟值),则将调整相邻值。例如。新日期(2013,13,1)相当于新日期(2014,1,1),均创建2014-02-01的日期(请注意,该月份为0)。类似地,对于其他值:新日期(2013,2,1,0,70)等同于新日期(2013,2,1,1,10),它们都创建2013-03-01T01:10:00的日期。

根据评论建议更新:

来自同一来源的进一步文件:

  

注意:由于浏览器差异和不一致性,强烈建议不要使用Date构造函数(和Date.parse,它们是等效的)解析日期字符串

所以,是的,当你使用字符串时,不同的浏览器=不同的结果,因此不鼓励这样做。