0

谁能帮我找出两者之间的区别:

TimeZone.init(identifier: "GMT")
TimeZone(abbreviation: "GMT")
TimeZone.init(identifier: "UTC")
TimeZone(abbreviation: "UTC")
4

1 回答 1

0

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:模式意味着在引用时区的名称/描述(又名:)时将使用提供的标识符identifierabbreviation:模式意味着将使用缩写来查找时区,但随后对名称的引用时区的/description 将使用全名/description。

另请注意,虽然identifier:将接受时区的缩写和长名称,但abbreviation:只接受缩写。

于 2020-06-09T01:21:50.503 回答