gpt4 book ai didi

Swift4 - 强制解开使用 TimeZone.current.abbreviation() 返回的缩写是否安全?

转载 作者:行者123 更新时间:2023-11-30 11:37:50 35 4
gpt4 key购买 nike

我正在寻找一种将本地时区保存到属性中的方法,以便稍后当我需要在 UI 中显示格式化日期时可以使用它来格式化日期。

我发现 TimeZone.current.abbreviation() 可以为我返回缩写,我可以稍后使用该缩写来格式化日期,但我注意到它返回 String ? 而不是字符串

我检查了official document但没有发现该 API 返回可选字符串的原因或可能的失败情况。

我当前存储时区的解决方案是 let timeZone = TimeZone.current.abbreviation()! 但我不确定强制解开它是否安全。有谁知道强制解开返回的缩写是否安全或者为什么 API 返回可选值?谢谢。

最佳答案

虽然这没有记录,但我想说,返回值是可选的肯定有一个原因。所以它有时失败只需用这个检查可选:

if let abbr = TimeZone.current.abbreviation() {
// use abbreviation
} else {
// fall back on something else
}

无论如何,您都应该对几乎每个选项都执行此操作。

我认为这里更重要的是你决定如何格式化你的日期。从你的措辞来看,我怀疑你没有使用 DateFormatter (否则你不需要存储缩写)。

使用DateFormatter!

只需存储TimeZone.current(整个TimeZone对象)并将其分配给dateFormatter.timeZone。格式化程序将为您解决一切问题。您可以使用日期格式,例如 yyyy/MM/dd/HH:mm:ss zzz:

let formatter = DateFormatter()
formatter.dateFormat = "yyyy/MM/dd/ HH:mm:ss zzz"
formatter.timeZone = TimeZone(identifier: "Asia/Shanghai")
formatter.string(from: Date())

您似乎还想显示是否是夏令时。使用TimeZoneisDaylightSavingTime方法来检查。您只需在末尾添加一个类似 (夏令时) 的字符串即可。

关于Swift4 - 强制解开使用 TimeZone.current.abbreviation() 返回的缩写是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49548638/

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