当我启动我的应用时,我将默认时区设置为GMT
[NSTimeZone setDefaultTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];
然后,在对[NSTimeZone]
的后续调用中,我使用-localTimeZone
。在iOS 10之前,一切正常,我将GMT-0作为返回的时区。现在,在iOS 11上,我得到了我的本地时间,即GMT-3。
另外,如果我改为呼叫-defaultTimeZone
,我也会得到GMT-0,这是正确的答案。有人提到为什么-localTimeZone
改变了它的行为?
答案 0 :(得分:4)
这是iOS11中的一个错误。我提交了一个雷达,它被Apple标记为“DUPLICATE OF 33629367”(从iOS11.1测试版开始仍然是一个开放的问题)。在大多数情况下,最好停止使用localTimeZone ......这是一个线程噩梦。
事情应该如何运作:
在iOS11中,[NSTimeZone localTimeZone]似乎相当于[NSTimeZone systemTimeZone]