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

Zby*_*nek 3 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
Run Code Online (Sandbox Code Playgroud)

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

Jam*_*rpe 5

您的个人资料表明您在捷克共和国. getDate返回本地时间的值.2017年,根据timeanddate.com,观察了Daylight Savings并于5月生效.但是,它也说在1970年期间:

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
Run Code Online (Sandbox Code Playgroud)