我注意到在某些设备上,特定时区的NSTimeZone
name
方法可以返回不同的值。测试布里斯班时区时,我的设备返回@"Australia/Brisbane"
,而另一个用户的设备返回"Etc/GMT-10"
。两款iPhone都运行3.1.2。
Date and Time Programming Guide for Cocoa表示:
timeZoneWithName :传递给此方法的名称可能位于任何一个 系统理解的格式,用于 例如EST,Etc / GMT-2, 美洲/阿根廷/ Buenos_Aires, 欧洲/摩纳哥,或美国/太平洋,如图所示 在以下代码片段中。
我想知道什么可以决定使用哪个值?装置?语言?
答案 0 :(得分:1)
我发现了原因是什么。
从Apple的内置列表手动设置时区时,会返回正确且准确的时区名称。但是,一些移动运营商通过无线方式提供当前时区偏移,如果是这种情况,Apple会提供“自动”设置,允许iPhone在移动到另一个时区时自动更改时区。
问题在于,虽然提供了当前的GMT偏移量,但无法确定用户所处的纬度。显然,例如,澳大利亚有几个城市的时区为GMT -10。因此,没有特定的时区名称,只有手机当前为GMT -10。
答案 1 :(得分:0)
我从未想象你描述的是什么。根据我的经验,它会返回您使用它创建的名称。
在任何情况下,如果您使用UI显示名称,则应调用[NSTimeZone localizedName:locale:]
以强制使用您想要的名称样式。