首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS 11 [NSTimeZone localTimeZone]忽略[NSTimeZone defaultTimeZone];

iOS 11 [NSTimeZone localTimeZone]忽略[NSTimeZone defaultTimeZone];
EN

Stack Overflow用户
提问于 2017-09-30 02:56:52
回答 1查看 401关注 0票数 1

启动应用程序时,我将默认时区设置为GMT [NSTimeZone setDefaultTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];

然后,在随后对[NSTimeZone]的调用中,我使用-localTimeZone。直到iOS 10,一切正常工作,我得到了GMT-0作为返回的时区。现在,在iOS 11上,我得到了我的本地时间,也就是GMT-3.

另外,如果我调用-defaultTimeZone,我也得到GMT-0,这是正确的答案。现在有人知道为什么-localTimeZone改变了它的行为?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-06 14:36:37

这是iOS11中的一个bug。我提交了一份雷达,它被苹果标记为“33629367的复制”( iOS11.1测试版至今仍是个未知数)。在大多数情况下,最好停止使用localTimeZone.这有点像一场线程噩梦。

事情应该如何运作:

  • NSTimeZone systemTimeZone总是返回系统时区。如果系统时区发生变化,则必须请求此方法(返回的NSTimeZone不自动更新)
  • NSTimeZone defaultTimeZone返回systemTimeZone,除非设置了defaultTimeZone。如果默认时区或系统时区发生变化,则必须请求此方法(返回的NSTimeZone不自动更新)
  • NSTimeZone localTimeZone返回的时区等于defaultTimeZone返回的时区。返回的NSTimeZone在systemTimeZone或defaultTimeZone发生变化时自动显示。所以它可以在一个函数的中间对你进行更新。

在iOS11中,NSTimeZone localTimeZone似乎等同于NSTimeZone systemTimeZone

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46499155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档