我可以使用[NSTimeZone knownTimeZoneNames]
获取时区列表,但这只提供了包含每个时区一两个城市的时区ID。
日期和时间设置中有一个很好的城市列表,我看到了一些其他应用程序也有相同或类似的查找列表。
这些列表来自哪里?
我确实需要像日期和时间一样将选定的城市与其时区相关联。
只有2个?在3.1版本中,[NSTimeZone knownTimeZoneNames]
返回一个包含401个元素的数组,而地球上的时区要少得多。
我相信“其他应用程序”也使用+knownTimeZoneNames
,因为这是唯一返回此类列表的公共方法。但请确保您的代码是正确的。
Settings.app使用来自私有的AppSupport.framework的CPCity API。它确实有旧金山,但它是私有的。
您需要创建自己的数据库(数据可以从/System/Library/PrivateFrameworks/AppSupport.framework/all_cities_adj.plist
复制)。
我知道这可能是一个晚回答,但以防万一像我前几天那样偶然遇到了它。我刚刚开源了一个库,可以完全实现这个功能。它作为CocoaPod可用,你可以在这里找到它:
https://github.com/gligorkot/TimeZonePicker
另外,感谢上面所有的回复,它们帮助我找到了用于“设置”应用程序的正确城市数据库。
/System/Library/PrivateFrameworks/GeoKit.framework/Versions/A/Resources/world.geokit
。 - rid