无论如何,是否可以告诉您手机位于哪个时区/国家/地区?我宁愿不使用定位服务。

这样做的目的是自动路由调用。如果用户在美国,我希望该应用默认为调用美国调用中心。如果用户在另一个国家/地区,我希望它默认为他们的调用中心。

谢谢!

最佳答案

您可以使用以下方法获取本地时区的名称:

NSTimeZone *timeZone = [NSTimeZone localTimeZone];
NSString *tzName = [timeZone name];

名称将类似于Australia/SydneyEurope/ZurichAmerica/Denver。既然听起来您可能只关心非洲大陆,那可能就是您所需要的。

如果您需要更多:在http://www.iana.org/time-zones上获取官方时区数据库。下载tzdata2013g.tar.gz(或在阅读本文时,为tzdataYYYYx.tar.gz的最新版本)。该存档中有一个名为zone.tab的文件,该文件为每个时区提供经度/纬度,例如:
CH      +4723+00832     Europe/Zurich
+4723+00832表示纬度= +47º23“,经度= +8º23”。

更新:在某些情况下(我不确定是哪个),时区名称可能是较旧的名称,例如US/Pacific,但未在zone.tab中列出。要处理这些问题,还需要获取名为backward的文件,该文件可以将较早的名称转换为当前名称。

zone.tab转换为您的应用可以使用的东西完全取决于您。结果远不及定位服务准确,但可以提供一个总体思路。但是不能保证。在以下几种情况下它将失败:
  • 用户在“设置”中更改其时区。大多数用户让他们的手机自动设置时间和时区,但并非所有人都可以。如果用户更改时区,您将得到他们想要的任何东西,而不是准确的东西。
  • 设备无法确定正确的本地时区。网络问题可能会阻止手机准确设置时间和区域。例如,如果用户乘飞机旅行并在着陆时遇到网络问题,则电话可能仍会显示离开其出发地点的时区。
  • 10-08 07:48
    查看更多