Javascript日期 - getDate在不同年份给出不同的结果

时间:2017-10-19 11:00:54

标签: javascript date

我有两个日期字符串 - 同月,日和时间,但不同年份(2017年,1970年)。当我将它们转换为Date对象然后使用getDate()函数时,我会得到不同的一天。

var d1 = '1970-05-11T22:00:00.000Z';
var d2 = '2017-05-11T22:00:00.000Z';
console.log(new Date(d1), new Date(d1).getDate()); // day 11
console.log(new Date(d2), new Date(d2).getDate()); // day 12

为什么会这样,我该如何控制这种行为?

1 个答案:

答案 0 :(得分:5)

您的个人资料表明您在捷克共和国。 getDate返回本地时间的值。 2017年,according to timeanddate.com,观察了夏令时,并于5月生效。但是,1970年it also says that

  

1970年未观察到夏令时(DST)

     

布拉格全年观察中欧时间(CET)。

     

DST在1970年没有使用。

您的UTC时间中的22:00足够接近午夜,getDate将在您的时区返回第二天,因为它是2017年的第12个当地时间,但仍然是1970年的第11个。

您可以使用getUTCDate来修复此问题,对于两者都返回11:

var d1 = '1970-05-11T22:00:00.000Z';
var d2 = '2017-05-11T22:00:00.000Z';
console.log(new Date(d1), new Date(d1).getUTCDate()); // day 11
console.log(new Date(d2), new Date(d2).getUTCDate()); // day 11

相关问题