谁能帮我找出以下之间的区别:
TimeZone.init(identifier: "GMT")
TimeZone(abbreviation: "GMT")
TimeZone.init(identifier: "UTC")
TimeZone(abbreviation: "UTC")
TL;DR:
identifier:
表示生成的时区实例继续 以使用您在引用时区时提供的标识符。abbreviation:
而是使用时区的默认名称。 否则,它们实际上与计算相同。
您无需致电Class.init()
.Class()
是标准形式。
由于Apple的文档在时区初始化方面有些不足,并且我们无法访问其源代码,因此我可以通过测试这些变体来确定以下内容:
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:
模式意味着缩写将用于查找时区,但随后对时区名称/描述的引用将使用全名/描述。
另请注意,虽然identifier:
将接受时区的缩写和长名称,但abbreviation:
只接受缩写。