TimeZone.init(标识符:" ")和TimeZone(缩写:" ")有什么区别?



谁能帮我找出以下之间的区别:

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:只接受缩写。

相关内容

  • 没有找到相关文章

最新更新