2010-01-31 63 views
1

我注意到在某些设备上,特定时区的NSTimeZonename方法可以返回不同的值。在测试布里斯班时区时,我的设备返回@"Australia/Brisbane",而其他用户的设备返回"Etc/GMT-10"。两个iPhone都运行3.1.2。正在返回不同的NSTimeZone名称

Date and Time Programming Guide for Cocoa指出:

timeZoneWithName:传递给此方法的名称可以是任何的 格式由系统理解为 例如EST,ETC/GMT-2, 美洲/阿根廷/布宜诺斯艾利斯, 欧洲/摩纳哥或美国/太平洋,如 所示,代码如下。

我只想知道什么可以确定使用哪个值?装置?语言?

回答

1

我发现这是什么原因。

当从Apple的内置列表中手动设置时区时,会返回正确且精确的时区名称。但是,一些移动运营商通过空中提供当前时区偏移,如果是这种情况,Apple会提供“自动”设置,允许iPhone在移动到另一个时区时自动更改时区。

问题是,虽然提供了当前的GMT偏移量,但没有办法知道用户处于哪个纬度。很明显,例如,澳大利亚的几个城市可能会有GMT -10的时区。因此,没有具体的时区名称可用,只有电话当前是GMT -10。

0

我从来没有现场描述过你的描述。根据我的经验,它返回你创建它的名字。

在任何情况下,如果您使用UI显示的名称,应该调用[NSTimeZone localizedName:locale:]来强制使用您想要的名称样式。

相关问题