gpt4 book ai didi

ios - 来自偏移量的时区名称/缩写

转载 作者:行者123 更新时间:2023-12-02 07:49:50 30 4
gpt4 key购买 nike

我从 GMT 偏移量(以秒为单位)开始,我想要相应时区的名称。我是说:

let offset = -28800
let tz = TimeZone(secondsFromGMT: offset)
let tzname = tz?.localizedName(for: .standard, locale: Locale.current)

我尝试了多种获取 tzname 的方法,但我得到的只是 GMT-05:00。那不是我想要的。我希望有“东部标准时间”或“EST”之类的内容。有办法获取吗?

不想想要通过某种反向地理编码。我希望系统能够简单地给我答案。 Stack Overflow 上对此类问题的其他回复似乎表明这是它应该做的,但它没有这样做。

最佳答案

您不能单独使用距 GMT 的秒数偏移量来唯一确定时区缩写。偏移量和时区之间不存在一一对应的关系。

这可能不会令人满意,但您可以通过迭代 knownTimeZoneIdentifiers 来获取匹配时区的列表。并查找匹配时区的列表:

let abbreviationsAndIdentifiers = TimeZone.knownTimeZoneIdentifiers
.compactMap { TimeZone(identifier: $0) }
.filter { $0.secondsFromGMT() == -28800 }

从那里,您可以使用 map 获取 abbreviation(for:) , identifierlocalizedName(for:locale:)分别获取 PSTAmerica/Los_Angeles太平洋标准时间(-28800)。显然,上面的代码可能会根据偏移量和一年中的时间返回各种不同的匹配。

<小时/>

对 future 读者的一些注意事项:

  • 时区缩写并不唯一。请参阅https://en.wikipedia.org/wiki/List_of_time_zone_abbreviations您会看到相同的三个字母缩写映射到完全不同的时区。例如。 CST 可以表示“中部标准时间”(北美)、“古巴标准时间”或“中国标准时间”。

  • 请注意,与 GMT 的偏移 -28800 将导致不同的时区(具体取决于一年中的不同时间)。例如。由于夏令时,-28800 将返回 1 月份的一组时区匹配,以及 7 月份的另一组时区匹配。考虑使用secondsFromGMT(for:) ,而是指定日期,以消除任何歧义。

关于ios - 来自偏移量的时区名称/缩写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60244220/

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