首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift4 -强制打开使用TimeZone.current.abbreviation()返回的缩写是否安全?

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

Stack Overflow用户
提问于 2018-03-29 05:25:36
回答 1查看 266关注 0票数 0

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

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

我检查了正式文件,但是没有发现为什么该API返回一个可选的字符串,或者什么可能是失败的情况。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-29 05:51:58

虽然这还没有文档化,但我想说,返回值是可选的肯定是有原因的。因此,它有时会失败,只需检查可选选项如下:

代码语言:javascript
复制
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这样的日期格式

代码语言:javascript
复制
let formatter = DateFormatter()
formatter.dateFormat = "yyyy/MM/dd/ HH:mm:ss zzz"
formatter.timeZone = TimeZone(identifier: "Asia/Shanghai")
formatter.string(from: Date())

你似乎也想证明这是否是夏令时。使用isDaylightSavingTime方法TimeZone进行检查。您可以在末尾添加一个类似于(daylight saving)的字符串。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49548638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档