为什么新的Date()在Javascript中减去1天?

时间:2015-02-20 17:25:13

标签: javascript date

我需要将String转换为Date对象。

日期字符串按以下格式提供:

  

“2015-01-28T00:00:00”

当我创建一个新日期时,我会得到上一个日期:

Entered: new Date("2015-01-28T00:00:00")

Result: Tue Jan 27 2015 17:00:00 GMT-0700 (Mountain Standard Time)

有谁知道为什么会这样?

2 个答案:

答案 0 :(得分:2)

实际上,您没有获得上一个日期。 。 。你得到那个日期,由时区差异抵消。

Tue Jan 27 2015 17:00:00(山区时间)+ 7小时(时区差异)= 2015-01-28T00:00:00(GMT)

或者,在英语中,当它在英格兰格林威治的午夜12点时,它是前一天下午5点在科罗拉多州丹佛市。 ;)

这是正确的日期/时间,只是在不同的时区。

答案 1 :(得分:1)

输入以下内容时:

 new Date("2015-01-28T00:00:00");
 // Result: Tue Jan 27 2015 17:00:00 GMT-0700 (Mountain Standard Time)

浏览器假设您在GMT时区中提供日期。因此它会自动将给定日期转换为您当地的日期。

向浏览器通知您正在处理的时区以防止将来出现问题总是一个好主意:

 new Date("2015-01-28T00:00:00-07:00");
 // Result: Tue Jan 28 2015 00:00:00 GMT-0700 (Mountain Standard Time)