首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从iPhone获取时区/国家/地区

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

Stack Overflow用户
提问于 2013-10-05 00:49:00
回答 3查看 32.5K关注 0票数 24

有没有办法知道手机所在的时区/国家?我不喜欢使用定位服务。

这样做的目的是自动路由呼叫。如果用户在美国,我希望应用程序默认呼叫基于美国的呼叫中心。如果用户在另一个国家,我希望它默认到他们的呼叫中心。

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-10-05 04:27:06

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

代码语言:javascript
复制
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文件,它为每个时区提供了一个lat/long,例如:

代码语言:javascript
复制
CH      +4723+00832     Europe/Zurich

+4723+00832表示纬度=+47°23“,经度=+8°23”。

更新:在某些情况下(我不确定是哪种情况),时区名称可能是zone.tab中没有列出的较旧样式的名称,如US/Pacific。要处理这些问题,还需要一个名为backward的文件,该文件提供旧名称到当前名称的翻译。

zone.tab转换成你的应用程序可以使用的东西是由你决定的。搜索结果远不及定位服务准确,但会给出一个大概的概念。但是,它不能保证是。它会在以下几种情况下失败:

  1. 用户在设置中更改其时区。大多数用户让他们的手机自动设置时间和区域,但不是每个人。如果用户更改了他们的时区,你将得到他们想要的任何东西,而不是accurate.
  2. The设备无法确定正确的本地时区的东西。网络问题可能会阻止电话准确设置时间和区域。例如,如果用户乘坐飞机旅行,但在降落时出现网络问题,手机可能仍会显示其出发位置的时区。
票数 61
EN

Stack Overflow用户

发布于 2013-10-05 00:53:18

更新:在最后一条评论之后,我正在修改我的答案。

您可以反向查找电话的IP以查找地理位置。这里有several rest APIs available

我不推荐这样做,因为这可能会导致Apple拒绝你的应用程序。安全的选择是通过苹果提供的location services

票数 1
EN

Stack Overflow用户

发布于 2014-12-04 19:57:13

代码语言:javascript
复制
    NSTimeZone *timeZoneLocal = [NSTimeZone localTimeZone];
    NSString *strTimeZoneName = [timeZoneLocal name];

    or

    NSTimeZone *timeZoneLocal = [NSTimeZone defaultTimeZone];
    NSString *strTimeZoneName = [timeZoneLocal name];
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19186666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档