当我尝试从另一种日期格式创建一个日期对象时,结果日期正在改变它的值

When I try to create a date object from another date format, the result date is changing it's value

本文关键字:日期 结果 对象 改变 一个 另一种 格式 创建      更新时间:2023-09-26

当我尝试从另一种日期格式创建日期对象时,结果日期正在改变它的值。如何在不改变日期值的情况下实现这一点?

new Date("Mon, 31 Oct 2016 00:00:00 GMT");

如果结果是2016年10月30日星期日20:00:00 GMT-0400(东部夏令时),我如何从上面得到星期一31日期?

调整已创建日期对象的timezoneOffset应该可以达到目的。但是在使用它的时候要小心,因为你应该确保date对象是从GMT创建的,而不是从某个本地时间创建的。

下面的答案是假设输入日期是GMT

var tempDate = new Date("Mon, 31 Oct 2016 00:00:00 GMT");
var tempTime = tempDate.getTime() + (tempDate.getTimezoneOffset() * 60000);
tempDate = new Date(tempTime);
console.log(tempDate);

它不会更改日期,它只是将其转换为您当地的时区。这是一个有点烦人的行为,我知道的唯一解决方法是将您的系统时区设置为GMT。如果你需要做日期和时间的工作,你可能想看看Moment.js - http://momentjs.com/