Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iPhone';s日期和日期;获取时区列表的时间_Iphone_Xcode_Timezone - Fatal编程技术网

iPhone';s日期和日期;获取时区列表的时间

iPhone';s日期和日期;获取时区列表的时间,iphone,xcode,timezone,Iphone,Xcode,Timezone,我可以通过[NSTimeZone knownTimeZoneNames]获得时区列表,但这只会给出时区ID,其中每个时区中包含一个或两个城市 日期和时间设置有一个很好的城市列表,我也看到过一些其他应用程序,它们的查找列表即使不相似,也是相同的 这些清单来自哪里 我确实需要像Date&time那样将选定的城市与其时区关联起来。只有2个?在3.1上,[NSTimeZone knownTimeZoneNames]返回401个元素的数组,地球上的时区远少于200个 我很确定“其他应用程序”也会使用+kn

我可以通过
[NSTimeZone knownTimeZoneNames]
获得时区列表,但这只会给出时区ID,其中每个时区中包含一个或两个城市

日期和时间设置有一个很好的城市列表,我也看到过一些其他应用程序,它们的查找列表即使不相似,也是相同的

这些清单来自哪里


我确实需要像Date&time那样将选定的城市与其时区关联起来。

只有2个?在3.1上,
[NSTimeZone knownTimeZoneNames]
返回401个元素的数组,地球上的时区远少于200个

我很确定“其他应用程序”也会使用
+knownTimeZoneNames
,因为这是返回此类列表的唯一公共方法。不过,请确保您的代码是正确的


Settings.app使用privateAppSupport.framework中的privateAPI。它确实有旧金山,但它是私有的。
您需要创建自己的数据库(可以从
/System/Library/privateframes/AppSupport.framework/all_cities\u adj.plist
复制数据)。

您需要的通常称为奥尔森数据库。例如,见。公共域文件包含所有时区。您可以在发行版的zoneinfo目录中找到zones.tab文件。

我知道这可能是一个迟来的答案,但以防其他人像我前几天那样意外发现它。我刚刚打开了一个图书馆,它正是这样做的。它以CocoaPod的形式提供,您可以在这里找到它:


另外,感谢所有上述回复,他们帮助我找到了用于设置应用程序的正确城市数据库。

knowTimeZoneNames与其他列表的列表不同。例如,在加利福尼亚州,唯一一个被列入“已知时区”名单的城市是美国/洛杉矶。你不会找到其他城市,但是,如果你去约会和时间,你会发现许多城市,如旧金山,圣若泽,萨克拉门托等。每个时区都有多个城市,但来自不同的地方。例如,在太平洋时区,我能找到的唯一美国城市是洛杉矶,但你会发现温哥华,我相信温哥华是不列颠哥伦比亚省。我认为这是世界上实际时区的数量与列表中城市数量之间差距的原因。肯尼,感谢plist将成为我所寻找的。你知道这个名单吗?它是一个数组列表,其中包含。。。项目0=纬度项目1=经度项目2=??时区??项目3=??时区id???第4项=国家缩写第5项=城市第6项=国家知道第2项是什么吗?它显示火奴鲁鲁为1,应该是-10。此外,对于所有美国城市,它使用美国/东部、美国/太平洋等。据我所知,这些都不是有效的时区ID。美国/太平洋应该是美国/洛杉矶。没问题,我可以让我们用长/长时间来确定时区。再次感谢你,JohnA,到目前为止,我在这个练习中学到了一些东西。。。1.普利斯特共有193个城市。knownTimeZoneNames返回4053。如果你把两个不重复的组合在一起,你会得到465 4。日期和时间首选项中的时区列表仍然包含上述两个列表中不存在的城市,如圣何塞、匹兹堡。5.knownTimeZoneNames与timeZoneWithName使用的列表不同。您可以通过将时区命名为US/Eastern来传递并获得正确的时区,但US/Eastern不会出现在knownTimeZoneNames返回的列表中。这是一个有趣的练习。感谢所有帮助过我的人。JohnCheck out
/System/Library/privateframes/GeoKit.framework/Versions/A/Resources/world.GeoKit