在NSTimeZone类下,有+localTimeZone和+systemTimeZone。我在iphone模拟器上做了一个测试,两者都返回了指示相同时区的NSTimeZone对象。有什么关系?我应该使用哪一个来找出iPhone的时区设置?谢谢
我的测试:
NSLog(@"Local Time Zone %@",[[NSTimeZone localTimeZone] name]);
NSLog(@"System Time Zone %@",[[NSTimeZone systemTimeZone] name]);发布于 2009-10-06 18:20:46
用户(或您的应用程序或其他应用程序)可以随时更改应用程序的默认时区(使用+[NSTimeZone setDefaultTimeZone])或系统时区(使用系统首选项)。+[NSTimeZone localTimeZone]返回一个代理,它将始终充当应用程序的当前默认时区,即使默认时区发生更改也是如此。您可以更改应用程序的默认时区,使其行为如同处于不同的时区。
+[NSTimeZone systemTimeZone]返回当前系统时区(使用系统首选项设置)。在大多数情况下,这两个时区是相同的(我相信应用的默认时区设置为应用启动时的系统时区)。
如果您想知道系统的时区设置,您可能希望使用+[NSTimeZone systemTimeZone]。如果你只是想让你的应用程序在正确的时区下工作,你可能需要+[NSTimeZone localTimeZone]。
发布于 2009-10-06 18:17:41
对于这类事情,The docs提供了大量有用的信息。在这种情况下,他们说:
localTimeZone是当前应用程序的默认时区。这可以由用户设置,或在应用程序中以编程方式设置(或可能以其他方式设置)。它基本上是一个指向具有间接级别的defaultTimeZone的指针;如果默认时区更改,localTimeZone将更改为well.systemTimeZone,,另一方面,它是核心系统使用的时区。与localTimeZone.不同的是,如果系统时区在应用程序执行期间发生更改,则不会更改缓存值
https://stackoverflow.com/questions/1526990
复制相似问题