在Javascript中使用新日期("2014年8月11日")和新日期("2014-08-11")的不同日期

san*_*udr 2 javascript date date-parsing

new Date("2014 Aug 11")给出Mon Aug 11 2014 00:00:00 GMT+0100 (GMT Daylight Time)哪个是正确的,但是

new Date("2014-08-11")Mon Aug 11 2014 01:00:00 GMT+0100 (GMT Daylight Time).

为什么这两个日期有1小时的差异?

我试图减去2个日期,如果两个日期相同,则期望结果为"0".但在我上面的例子中,它不是零!

Den*_*ret 10

它在perfeclty解释的MDNparse功能(其解析使用Date构造函数):

给定日期字符串"2014年3月7日",解析假定为本地时区,但是给定ISO格式(例如"2014-03-07"),它将假定UTC的时区.因此,使用这些字符串生成的Date对象将表示不同的时刻,除非系统设置了UTC的本地时区

GMT + 2的人会看到2小时的差异.

如果您无法正确解析日期,并且您对作为输入的字符串类型充满信心,则可能会强制使用时区:

var date = new Date(str+" UTC");
Run Code Online (Sandbox Code Playgroud)