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>
我正在使用 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>