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



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

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

我已经检查了官方文件,但没有发现API返回可选字符串或可能是失败情况的原因。

我目前用于存储时区的解决方案是let timeZone = TimeZone.current.abbreviation()!,但我不确定是否可以安全地将其解开。有人知道是否可以安全地强制解开返回的缩写,或者API为什么返回可选价值?谢谢。

尽管没有记录在记录中,但我想说的是,返回值是可选的。因此,它 will 有时只需检查以下内容:

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方法检查。您可以在末尾添加像(daylight saving)这样的字符串。

相关内容

  • 没有找到相关文章

最新更新