4

我一直在寻找一段时间,并进行了大量的研究和试验,但我找不到一种方法来检索存储在 iOS 设备上的时区支持的用户设置中的值。

我研究了 NSTimeZone 便捷方法 +systemTimeZone、+resetSystemTimeZone、+defaultTimeZone、+localTimeZone。我什至完全理解它们之间的区别,以及我们如何为每个应用程序设置自己的默认时区,以及首次调用默认值如何返回 system. 然后系统会被缓存,如果设备更改时区,则需要重置。

问题是,systemTimeZone 始终是设备实际所在的位置,而不是在时区支持下的设备设置中设置的值。

我什至研究过 [[NSCalendar currentCalendar] timeZone] 以及 [[NSCalendar autoupdatingCurrentCalendar] timeZone]]。

我什至试过 [[[NSLocale currentLocale] objectForKey:NSCurrentCalendar] timeZone] 和 [[[NSLocale autoupdatingCurrentLocale] objectForKey:NSCurrentCalendar] timeZone]

没有返回设备的 Settings.app -> Mail, Contacts, Calendars -> Time Zone Support -> Time Zone 的值。

有谁知道如何检索 Settings.app -> Mail, Contacts, Calendars -> Time Zone Support -> Time Zone 设置的值?

谢谢和干杯!

4

1 回答 1

2

如果这有点离题,请原谅我,但您确定您真的想从以下位置访问时区支持设置吗?

  • Settings.app -> 邮件、通讯录、日历 -> 时区支持

否则我不会发表这篇文章,但是当您陈述以下内容时,您让我想到了:

问题是,systemTimeZone 始终是设备实际所在的位置,而不是在时区支持下的设备设置中设置的值。

不幸的是,您在这里的陈述并不完全正确。+systemTimeZone将返回设备实际所在的时区,除非用户已关闭自动设置并在以下位置选择特定时区:

  • Settings.app -> 常规 -> 日期和时间

这将更改要在系统范围内使用的时区,这会立即反映在状态栏中为新设置调整的时间上。

您之前尝试访问的内容似乎集中在本地 Calendar.app 中如何表示日历约会,并且似乎对该应用程序(以及该区域中的其余设置)是私有的。

如果您正在寻找可以由用户修改的有效系统范围的时区设置,那么日期和时间下的时区是您的最佳选择。这将是返回的值。+systemTimeZone

另一方面,如果您真的必须访问“邮件、联系人、日历”下的“时区支持”设置,恐怕我无法为您提供帮助,我为分心表示歉意。

于 2013-01-27T09:42:50.480 回答