momentjs toDate() - 时区被重置

momentjs toDate() - timezone gets reset

我正在使用 momentjs 并使用 convertedDate = moment().utcOffset(timezone).format() 将日期转换为不同的时区。这很好用,但它是一个字符串,我需要将它转换为日期对象。

我试过 new Date(convertedDate)moment().utcOffset(timezone).toDate() 但是 returns 我当前的时区作为日期对象。如何保留转换后的时区?

所以我离得并不远。该格式需要排除时区才能正常工作。这段代码终于按照我的需要工作了。

convertedDate = new Date(moment().utcOffset('-4').format('YYYY-MM-DD HH:mm'));

这应该有效:

我有同样的问题。只需使用您正在使用的相同方法将日期作为字符串获取。假设您的日期是,例如:“2018-08-05T10:00:00”。

现在您需要具有正确时间的 Date 对象。要在不弄乱时区的情况下将字符串转换为对象,请使用 getTimezoneOffset:

var date = new Date('2016-08-25T00:00:00')
var userTimezoneOffset = date.getTimezoneOffset() * 60000;
new Date(date.getTime() - userTimezoneOffset);

getTimezoneOffset() 将 return 为负值或正值。这必须被减去才能在世界上的每个地方工作。

使用 moment 根据时区获取带时间的本机 Date 对象的更简洁方法如下:

convertedDate = moment.utc(moment.tz(timezone).format('YYYY-MM-DDTHH:mm:ss')).toDate()

PS: assuming two things

  • you have imported both 'moment' and 'moment-timezone'.
  • value of timezone is given like 'Asia/Kolkata' instead of an offset value