gpt4 book ai didi

javascript - 如何从 JavaScript 中的 ISO 字符串获取时区名称?

转载 作者:行者123 更新时间:2023-12-02 17:56:46 24 4
gpt4 key购买 nike

这里我有一个 ISO 字符串 - 2023-02-23T14:30:00+11:00我尝试使用 luxon获取时区名称,但它返回“UTC+11”,而不是我希望它返回像澳大利亚/悉尼这样的时区名称。我确实知道不同的时区会有相同的偏移量。但这对我来说不是问题。

有办法实现吗?

这是我的代码片段

let dt = DateTime.fromISO('2023-02-23T14:30:00+11:00', { setZone: true });
console.log(dt.zone.name) // returns UTC+11

最佳答案

这应该是不可能的。问题是您有固定偏移时区,而不是 IANA 时区(请参阅 this article )。该问题在 documentation 中列出。 :

Multiple zones can have the same offset (think about the US's zones and their Canadian equivalents), though they might not have the same offset all the time, depending on when their DSTs are. Thus zones and offsets have a many-to-many relationship.

但是,您可以进行一些黑客攻击。 tz NPM 包已编译了所有时区,因此您可以执行以下操作:

const {DateTime, Zone} = require('luxon');
const tz = require('tz');

function getTimeZoneName(dt) {
let n = dt.zone.name.replace('UTC', '').replace(':', '');
const sign = n[0];
n = n.substring(1);
if (n.length === 2) n = n + '00'
n = n.padStart(4, '0');
return tz.tz_list[sign === '+' ? `+${n}` : `-${n}`];
}

let dt = DateTime.fromISO('2023-02-23T14:30:00+11:00', { setZone: true });
console.log(getTimeZoneName(dt)) // prints list of all possible timezones.

从那里您可能可以获得城市名称,但最好不要使用 IANA 时区。

关于javascript - 如何从 JavaScript 中的 ISO 字符串获取时区名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75512632/

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