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

Firefox new Date() works for invalid date

本文关键字:适用于 无效 日期 new Date Firefox      更新时间:2024-02-16

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

new Date('25/04/2016')

它创建以下日期:

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

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

Chrome返回一个无效日期。

进一步说明-当使用带有单个字符串参数的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');

在Firefox 30和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,10),这两个值都创建了2013-03-01T01:10:00的日期。

根据评论建议更新:

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

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

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