momentjs-toDate()-时区被重置

momentjs toDate() - timezone gets reset

本文关键字:-时 momentjs-toDate      更新时间:2023-09-26

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

我已经尝试过new Date(convertedDate)moment().utcOffset(timezone).toDate(),但这会将我的当前时区作为日期对象返回。如何保留转换后的时区?

所以我离这里不远了。格式需要排除时区才能工作。这个代码终于按我需要的方式工作了。

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

使用moment获得具有根据时区的时间的本机Date对象的更干净的方法如下:

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

PS:假设两件事

  • 您已导入'moment''moment-timezone'
  • CCD_ 8的值与CCD_

这应该有效:

我也有同样的问题。只需使用与您正在使用的方法相同的方法将Date作为字符串即可。假设你的日期是,例如:"2018-08-05T10:00:00"。

现在您需要具有正确时间的Date对象。要在不干扰时区的情况下将String转换为对象,请使用getTimezoneOffset:

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

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