NSTimeZone:localTimeZone和systemTimeZone有什么区别?
在NSTimeZone类下,有+ localTimeZone和+ systemTimeZone。 我在iPhone模拟器上做了一个testing,都返回NSTimeZone对象指示相同的时区。 有什么不同? 哪一个我应该用来找出iPhone的时区设置? 谢谢
我的testing:
NSLog(@"Local Time Zone %@",[[NSTimeZone localTimeZone] name]); NSLog(@"System Time Zone %@",[[NSTimeZone systemTimeZone] name]);
用户(或您的应用程序或其他应用程序)可能会随时更改应用程序的默认时区(使用+[NSTimeZone setDefaultTimeZone]
)或系统时区(使用系统偏好设置)。 +[NSTimeZone localTimeZone]
将返回一个代理,该代理将始终充当应用程序的当前默认时区,即使该默认更改也是如此。 您可以更改应用程序的默认时区,使其performance得像在不同的时区中一样。
+[NSTimeZone systemTimeZone]
返回当前系统时区(使用系统偏好设置)。 在大多数情况下,这些将是相同的(应用程序启动,该应用程序的默认时区设置为系统时区,我相信)。
如果你想知道系统的时区设置,你可能想使用+[NSTimeZone systemTimeZone]
。 如果你只是想要你的应用程序正确的时区,你可能需要+[NSTimeZone localTimeZone]
。
文档是这种事情的大量有用的信息。 在这种情况下,他们说:
-
localTimeZone
是当前应用程序的默认时区。 这可以由用户或在应用程序中设置(或可能以其他方式)。 它基本上是一个间接级别的defaultTimeZone
指针; 如果默认时区改变,localTimeZone
也会改变。 - 另一方面,
systemTimeZone
是核心系统使用的时区。 与localTimeZone
不同,如果系统时区在应用程序执行期间发生更改,则caching的值不会更改。