在NSTimeZone类下,有+ localTimeZone和+ systemTimeZone。我在iphone模拟器上做了一个测试,都返回NSTimeZone对象,指示相同的时区。有什么不同?我应该用哪一个来找出iPhone的时区设置?感谢
我的测试:
NSLog(@"Local Time Zone %@",[[NSTimeZone localTimeZone] name]);
NSLog(@"System Time Zone %@",[[NSTimeZone systemTimeZone] name]);
答案 0 :(得分:52)
用户(或您的应用程序或其他应用程序)可以随时更改应用程序的默认时区(使用+[NSTimeZone setDefaultTimeZone]
)或系统时区(使用“系统偏好设置”)。 +[NSTimeZone localTimeZone]
返回一个代理,该代理始终表现为应用程序的当前默认时区,即使该默认值发生更改。您可以更改应用程序的默认时区,使其行为就像它位于不同的时区一样。
+[NSTimeZone systemTimeZone]
返回当前系统时区(使用“系统偏好设置”设置)。在大多数情况下,这些都是相同的(应用程序启动时应用程序的默认时区设置为系统时区,我相信)。
如果您想知道系统的时区设置,可能需要使用+[NSTimeZone systemTimeZone]
。如果您只想为应用创建正确的时区,则可能需要+[NSTimeZone localTimeZone]
。
答案 1 :(得分:23)
The docs为这类事情提供了大量有用的信息。在这种情况下,他们说:
localTimeZone
是当前应用程序的默认时区。这可以由用户设置或在应用程序中以编程方式设置(或者可能以其他方式)。它基本上是指向具有间接级别的defaultTimeZone
的指针;如果默认时区发生变化,localTimeZone
也将更改。systemTimeZone
是核心系统使用的时区。如果系统时区在应用程序执行期间发生更改,则此的缓存值将不会更改,与localTimeZone
不同。