func abbreviation(for: Date) -> 字符串?在 swift 中发挥作用

func abbreviation(for: Date) -> String? function in swift

我无法理解这个函数“func abbreviation(for: Date) -> String?”在 swift 的 TimeZone 上可用。它能做什么。有没有详细的例子教程?

 let time1 = TimeZone(identifier: "America/Chicago")
 print(time1?.abbreviation(for: Date()))

如果我调用 .abbreviation() 方法,设备 time/region/language 如何影响结果。 我根据地区和语言得到不同的结果。

如果区域是澳大利亚,则输出是“GMT-6”。 如果区域是加拿大输出是“CST”

If region is austrilia output is "GMT-6". If region is Canada output is "CST"

这是很有道理的。如果你在this list中搜索“CST”,你会发现它是相当多时区的缩写。

具体来说,CST代表美国中部标准时间澳大利亚中部标准时间(后者也可以缩写为ACST)。

如果系统区域是澳大利亚,那么 abbreviationAmerica/Chicago 输出“CST”会相当混乱。澳大利亚人会看到“CST”并说“啊,那是 澳大利亚 中部标准时间”(至少 iOS 是这么认为的)。显然不是你的意思。因此,它求助于更准确但意义不大的“UTC-6”。

再比如同一个时区,不同语言的叫法不同。例如,如果 phone 的区域在加拿大,America/Toronto 将根据 phone 的语言有不同的缩写。在英语中,写作时是 EST - 东部标准时间。在法语(加拿大)中,它是 Heure Normale de l'Est (HNE)。 See other timezone abbreviations and names in French.

abbreviation(for:) 的输出应该是人类可读的,而不是机器可读的。它试图产生一个缩写,让生活在系统区域的人可以理解,说系统语言。在大多数情况下,它是一个黑盒子。别想太多了。