从iPhone获取时区/国家/地区

Ala*_*lan 24 iphone timezone ios

无论如何都要告诉手机所在的时区/国家/地区?我宁愿不使用位置服务.

这样做的目的是自动路由呼叫.如果用户在美国,我希望该应用默认为呼叫美国呼叫中心.如果用户在其他国家/地区,我希望它默认为其呼叫中心.

谢谢!

Tom*_*ton 60

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

NSTimeZone *timeZone = [NSTimeZone localTimeZone];
NSString *tzName = [timeZone name];
Run Code Online (Sandbox Code Playgroud)

名称将是Australia/Sydney,或Europe/Zurich,或America/Denver.既然听起来你可能只关心这个大陆,那可能就是你所需要的.

如果您需要更多:请访问http://www.iana.org/time-zones获取官方时区数据库.下载tzdata2013g.tar.gz(或者tzdataYYYYx.tar.gz当您阅读本文时的最新版本).该档案中有一个名为zone.tab每个时区的纬度/经度的文件,例如:

CH      +4723+00832     Europe/Zurich
Run Code Online (Sandbox Code Playgroud)

+4723+00832表示纬度= +47º23" ,经度= +8º23" .

更新:在某些情况下(我不确定哪个),时区名称可能是旧式名称US/Pacific,如未列出的那样zone.tab.要处理这些,还要获取调用的文件backward,该文件将旧名称的翻译转换为当前名称.

转换zone.tab为您的应用可以使用的内容取决于您.结果将远不如位置服务那么精确,但会给出一个大致的想法.但它不能保证.它会在几种情况下失败:

  1. 用户在"设置"中更改其时区.大多数用户让他们的手机自动设置时间和区域,但不是每个人.如果用户更改了他们的时区,您将获得他们想要的任何内容而不是准确的内容.

  2. 设备无法确定正确的本地时区.网络问题可能会阻止手机准确设置时间和区域.例如,如果用户乘飞机旅行并且在他们降落时遇到网络问题,则电话仍然可以从他们的出发地点显示时区.