gpt4 book ai didi

swift - 在 Swift 中获取时区缩写

转载 作者:行者123 更新时间:2023-12-05 09:06:25 24 4
gpt4 key购买 nike

我正在尝试使用以下代码检索本地时区的时区缩写。

private func getLocalTimezone() -> String {
guard let localTimezone = TimeZone.current.abbreviation() else {
return ""
}
return localTimezone
}

但是当我在印度时区时,我总是在我需要它作为 IST 的地方获得 GMT+5:30。当我在 CST 或 PST 时,它会正确出现。任何人都可以建议一种方法来解决此问题。提前致谢

最佳答案

这是因为时区缩写对区域设置敏感。 IST 在印度仅表示印度标准时间 (Asia/Kolkata)。在世界其他地方,它可能表示以色列标准时间或爱尔兰标准/夏令时。这是一个 site显示缩写列表。您可以亲眼看看它们有多模糊。

这就是为什么 abbreviation() takes into account the region of your phone ,即这个设置:

enter image description here

abbreviation() 如果您的设备所在地区是印度,则为您提供“IST”。如果您的手机在其他地方,它会显示“GMT+5:30”,因为这是最安全、最明确的选项。

如果您希望它无论您的设备在哪里都输出 IST,您需要通过创建一个时区标识符字典来硬编码它到您想要的缩写。有一个内置的 abbreviationDictionary 是另一种方式 - 标识符的缩写。您可以搜索它,它适用于 IST(Asia/Kolkata),但可能不适用于您感兴趣的任何其他时区。

let abbreviation = TimeZone.abbreviationDictionary
.first(where: { $1 == TimeZone.current.identifier })?.key

而且我不确定这本词典的内容在未来的 iOS 版本中是否会保持不变。使用它需要您自担风险。

关于swift - 在 Swift 中获取时区缩写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66115906/

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