Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
传递给日期构造函数的Javascript日期字符串给出了奇怪的结果_Javascript_Date_Constructor - Fatal编程技术网

传递给日期构造函数的Javascript日期字符串给出了奇怪的结果

传递给日期构造函数的Javascript日期字符串给出了奇怪的结果,javascript,date,constructor,Javascript,Date,Constructor,为什么在创建新日期时,使用格式相似的日期字符串会得到如此不同的结果 镀铬(43.0.2357.134米)控制台: 新日期('2014-12-25') 2014年12月24日星期三17:00:00 GMT-0700(山区标准时间) [Chrome假定Z为00:00(utc)并返回当地时间] 新日期('2014-1-25') 2014年1月25日星期六00:00:00 GMT-0700(山区标准时间) [什么?!完全相同的格式(我想),但返回25而不是24…见下一步…] 新日期('2014-01-2

为什么在创建新日期时,使用格式相似的日期字符串会得到如此不同的结果

镀铬(43.0.2357.134米)控制台:

新日期('2014-12-25') 2014年12月24日星期三17:00:00 GMT-0700(山区标准时间) [Chrome假定Z为00:00(utc)并返回当地时间] 新日期('2014-1-25') 2014年1月25日星期六00:00:00 GMT-0700(山区标准时间) [什么?!完全相同的格式(我想),但返回25而不是24…见下一步…] 新日期('2014-01-25') 2014年1月24日星期五17:00:00 GMT-0700(山区标准时间) […噢,前导0使其使用第一个示例中使用的逻辑] 新日期('2014/12/25') 2014年12月25日星期四00:00:00 GMT-0700(山区标准时间) [使用/代替-产生我相信大多数人会期望的结果(?):当地时间 在指定的同一日期] FIREFOX(39.0)控制台:

新日期('2014-12-25') 日期2014-12-25T00:00:00.000Z [与Chrome不同] 新日期('2014-1-25') 无效日期 [与Chrome不同,Firefox无法识别] 新日期('2014-01-25') 日期2014-01-25T00:00:00.000Z [与Chrome不同] 新日期('2014/12/25') 日期2014-12-25T07:00:00.000Z
教训似乎是:如果要在日期构造函数中使用字符串,请确保其格式正确(根据):

铬:

new Date('2014-12-25T00:00:00.000-07:00') Thu Dec 25 2014 00:00:00 GMT-0700 (Mountain Standard Time) 里面写着:

函数首先尝试根据 以日期时间字符串格式(15.9.1.15)调用的规则。如果 字符串不符合该格式,函数可能会退回到任何 特定于实现的试探法或特定于实现的日期格式。 …这对我说,如果你不提供确切的格式,Chrome和Firefox以及其他所有人都可以解释他们认为正确的日期字符串。(注意:格式上有一定的余地,例如,缺少的sss字段的值为“000”。有关更多详细信息,请参阅第节)

new Date('2014-12-25') Date 2014-12-25T00:00:00.000Z [different from Chrome] new Date('2014-1-25') Invalid Date [not recognized in Firefox, unlike Chrome] new Date('2014-01-25') Date 2014-01-25T00:00:00.000Z [different from Chrome] new Date('2014/12/25') Date 2014-12-25T07:00:00.000Z
YYYY-MM-DDTHH:mm:ss.sssZ
new Date('2014-12-25T00:00:00.000-07:00') Thu Dec 25 2014 00:00:00 GMT-0700 (Mountain Standard Time) new Date('2014-12-25T00:00:00.000-07:00') Date 2014-12-25T07:00:00.000Z
If Type(v) is String, then
    Parse v as a date, in exactly the same manner as for the parse method (15.9.4.2);
The function first attempts to parse the format of the String according to the rules called out in Date Time String Format (15.9.1.15). If the String does not conform to that format the function may fall back to any implementation-specific heuristics or implementation-specific date formats.