gpt4 book ai didi

javascript - 如何确定两个 IANA 时区在 JavaScript 中是否相同?

转载 作者:行者123 更新时间:2023-11-30 11:07:23 24 4
gpt4 key购买 nike

给定两个不同的 IANA (aka "tz database" or "Olson") time zones ,如何确定它们是否代表同一区域?

例如,Asia/KolkataAsia/Calcutta 代表相同的区域。

再举个例子,Africa/AsmaraAfrica/Asmera 代表同一个区域。

在使用 detect or guess the user's time zone 的 API 时,这些细微的拼写差异很重要,因为不能简单地将字符串与先前存储的值进行比较,因为不同的实现会返回时区标识符的不同变体。

最佳答案

完全支持 ECMAScript 国际化 API 的现代 JavaScript 实现可以使用以下内容:

function areSameTimeZones(zone1, zone2) {
var resolvedZone1 = Intl.DateTimeFormat(undefined, {timeZone: zone1})
.resolvedOptions().timeZone;
var resolvedZone2 = Intl.DateTimeFormat(undefined, {timeZone: zone2})
.resolvedOptions().timeZone;
return resolvedZone1 === resolvedZone2;
}

对于需要与旧版浏览器兼容的应用程序,Moment-Timezone可以利用:

function areSameTimeZones(zone1, zone2) {
var z1 = moment.tz.zone(zone1);
var z2 = moment.tz.zone(zone2);
return z1.abbrs === z2.abbrs && z1.untils === z2.untils && z1.offsets === z2.offsets;
}

关于javascript - 如何确定两个 IANA 时区在 JavaScript 中是否相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55110347/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com