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的值不会更改。