我有两个日期字符串 - 同月,日和时间,但不同年份(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
为什么会这样,我该如何控制这种行为?
答案 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