momentjs 在相差 12 小时或更长时间的时区之间切换

momentjs switching between timezone with 12 hours or more difference

我正在使用 moment js 像这样将日期转换为 UTC

var a = moment.utc('20-Oct-2021').tz('Asia/Kolkata');

a.format()

结果2021-10-20T05:30:00+05:30

现在我正在尝试使用来自该时区的 Newsland 的访问权限 Pacific/Auckland - 在系统中我将我的时区更改为 +13。

现在是

的结果

moment().utc(a).format()

2021-10-21T02:09:12Z

如果您注意到日期是 21 而不是实际存储的 20。

面临所有大于+-12的问题

更改您的时区不会更改 a 的时区,因为它的时区是手动设置的。您需要使用 local() 来获取您所在时区的时间。

// Always pass the string format if the string is not an ISO 8601 date
var a = moment.utc('20-Oct-2021', 'DD-MMM-YYYY').tz('Asia/Kolkata');

console.log(a.format());
console.log(a.utc().format()); // in UTC

console.log(a.local().format()); // This is in your timezone

a.tz("Pacific/Auckland"); // Change to Auckland

console.log(a.format()); // Auckland time
console.log(a.local().format()); // In your timezone, as same as above
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.33/moment-timezone-with-data-10-year-range.min.js"></script>