我有以下代码:
var d = new Date('2016-03-27');
console.log(d.getDate(), d);
d.setDate(d.getDate() + 1);
console.log(d.getDate(), d);
这给出了错误的答案:
27 Date 2016-03-27T00:00:00.000Z
28 Date 2016-03-27T23:00:00.000Z
注意第二行日期不匹配。好像是增加了24小时而不是一天。地点是拉脱维亚,当天时间变更了 1 小时。
正确答案是:
28 Date 2016-03-28T00:00:00.000Z
我该如何解决这个问题?
由于您正在使用 UTC 格式的日期,并且您希望忽略本地时区更改(例如夏令时),因此您应该始终使用getUTCDate()
and setUTCDate()
。 UTC 没有夏令时。
var d = new Date('2016-03-27');
console.log(d.getUTCDate(), d);
d.setUTCDate(d.getUTCDate() + 1);
console.log(d.getUTCDate(), d);
还要考虑 JavaScript 日期库,例如moment.js如果您有更复杂的要求。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)