当我在Firefox控制台中运行时:
new Date('25/04/2016')
它会创建以下日期:
Date 2018-01-04T05:00:00.000Z
似乎是试图从01/04/2016
添加25个月,最后到01/04/2018
。这是预期的行为吗?我原以为它会导致错误,而不是试图解析荒谬的日期。
Chrome返回无效日期。
答案 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,它们是等效的)解析日期字符串
所以,是的,当你使用字符串时,不同的浏览器=不同的结果,因此不鼓励这样做。