timezone - TimeZone.init(identifier:"") 和 TimeZone(abbreviation: "") 有什么区别?
问题描述
谁能帮我找出两者之间的区别:
TimeZone.init(identifier: "GMT")
TimeZone(abbreviation: "GMT")
TimeZone.init(identifier: "UTC")
TimeZone(abbreviation: "UTC")
解决方案
TL;DR:
identifier:
表示生成的 TimeZone 实例继续使用您在引用时区时提供的标识符。abbreviation:
,而是使用时区的默认名称。否则,它们对于计算实际上是相同的。
你不需要打电话Class.init()
。Class()
是标准形式。
由于 Apple 的文档在 TimeZone 初始化问题上有些欠缺,而且我们无法访问他们的源代码,因此我通过测试这些变化能够确定以下内容:
let tz1 = TimeZone(identifier: "PST")
let tz2 = TimeZone(identifier: "America/Los_Angeles")
let tz3 = TimeZone(abbreviation: "PST")
let tz4 = TimeZone(abbreviation: "America/Los_Angeles")
print(tz1!)
print(tz2!)
print(tz3!)
print(tz4 == nil ? "nil" : tz4!)
产生:
PST (fixed)
America/Los_Angeles (fixed)
America/Los_Angeles (fixed)
nil
从中,我们可以得出结论,identifier:
模式意味着在引用时区的名称/描述(又名:)时将使用提供的标识符identifier
,abbreviation:
模式意味着将使用缩写来查找时区,但随后对名称的引用时区的/description 将使用全名/description。
另请注意,虽然identifier:
将接受时区的缩写和长名称,但abbreviation:
只接受缩写。
推荐阅读
- python - 当您知道数据在集合中的位置时,python 最快的集合类型是什么?
- c# - 如何打包自定义 UWP 模板化控件以便在其他项目中重用,并可能供其他人使用?
- sql - SQL Server 中的 Last_Value
- powershell - PowerShell Foreach 循环,带有用于复制文件的用户帐户的变量
- microsoft-graph-api - Graph API:尝试创建团队时出现 BadGateway
- amazon-web-services - AWS 中路由执行/数据库更改的时间
- html - 网格项目未按指定跨越
- git - Git 命令查找最常处理的文件列表
- python - 调用 Keras 模型时,有没有 @tf.function 没有区别。但是在构建低级模型时不同
- sql - 插入时如何继续序列