ios - 如何在 iOS 中转换时区格式?
问题描述
我得到了像这样的 GMT+5:30 时区格式。
TimeZone.current.abbreviation(), this will return string value like: //GMT+5:30
但我需要将上述格式转换为 Asia/Kolkata
如何解决这个问题?
解决方案
而不是调用:
TimeZone.current.abbreviation()
称呼:
TimeZone.current.identifier
在你的情况下,你会得到Asia/Kolkata
而不是GMT+5:30
.
但是让我们假设您只有一个带有时区缩写的字符串,例如"GMT+5:30"
. 您无法轻松地将其转换为特定的时区标识符,因为在给定的时间偏移处可能有多个时区。
这是一个小函数,它从缩写字符串创建一个时区,然后找到所有具有相同偏移量的匹配时区标识符。
func matchingTimeZones(abbreviation: String) -> [TimeZone]? {
if let tz = TimeZone(abbreviation: tzstr) {
return TimeZone.knownTimeZoneIdentifiers.compactMap { TimeZone(identifier: $0) }.filter { $0.secondsFromGMT() == tz.secondsFromGMT() }
} else {
return nil
}
}
您可以通过以下方式获取匹配列表"GMT+5:30"
:
let matches = matchingTimeZones(abbreviation: "GMT+5:30")
如果您打印该结果,您将看到其中一个是"Asia/Calcutta"
(在英语语言环境中)。
推荐阅读
- java - JTextField 输入异常检查和输入返回的问题
- reactjs - 当我从 API 获取数据时,MUI-dataTables 出错
- sql - 前 5 条记录,合并来自同一个表的两个查询
- javascript - 无法读取未定义的属性“_textureAtlas”
- go - 通过 websocket 使用 golang 提供 mp3 文件
- sql - Oracle为动态SQL创建公式以防止被零除
- qt - 圆角矩形的脏角不光滑
- amazon-web-services - AWS 警报表达式指标触发 ECS Auto Scale 策略时间 + cpu 利用率未触发
- sql - 选择字段以在访问中创建查询,会自动将星号 * 添加到所选字段。它显示在 SQL 视图中,但不显示在查询设计中
- google-sheets - Googlesheets中一个或多个单元格连续更改时的时间戳