我可以获得[NSTimeZone knownTimeZoneNames]
的时区列表,但这只会给出时区ID,其中包含每个时区中的一个或两个城市。
日期&时间设置有一个很好的城市列表,我看到一些其他应用程序具有相同但不相似的查找列表。
这些清单来自哪里?
我确实需要将一个被挑选的城市与其时区相关联,例如Date&时间确实如此。
答案 0 :(得分:7)
只有2个?在3.1上,[NSTimeZone knownTimeZoneNames]
返回401个元素的数组,地球上的时区少于200个。
我很确定“其他应用”也使用+knownTimeZoneNames
,因为这是返回此类列表的唯一公共方法。但请确保您的代码正确无误。
Settings.app使用私有 AppSupport.framework中的私有 CPCity API。它确实有旧金山,但它是私人的。
您需要创建自己的数据库(可以从/System/Library/PrivateFrameworks/AppSupport.framework/all_cities_adj.plist
复制数据。)
答案 1 :(得分:2)
您要求的通常被称为Olson数据库。例如,请参阅this Wikipedia page。公共域Zone.tab文件包含所有时区。您可以在libical发行版的zoneinfo目录中找到zones.tab文件。
答案 2 :(得分:1)
我知道这可能是一个迟到的答案,但以防其他人偶然发现它就像我前几天那样。我刚开源了一个完全符合这个要求的库。它可以作为CocoaPod使用,你可以在这里找到它:
https://github.com/gligorkot/TimeZonePicker
另外,感谢上面的所有回复,他们帮助我找到了用于设置应用的正确城市数据库。