【问题标题】:How do you get the local timezone based on core location coordinates?如何根据核心位置坐标获取当地时区?
【发布时间】:2011-05-21 06:22:26
【问题描述】:

是否可以在可可触摸中根据 gps 的坐标获取设备的本地时区?去年看到有人问过这个问题,但没有答案...

我真正想要的是与 GMT 时差的小时数,我不想查询网络服务。

或者,我可以询问设备设置的时区吗?

可以吗?

【问题讨论】:

标签: objective-c cocoa-touch gps core-location


【解决方案1】:

使用[NSTimeZone localTimeZone];

编辑:返回的对象有一个 -(NSInteger)secondsFromGMT 方法,您可以使用它来找出与 GMT 的差异。

【讨论】:

  • 这似乎从应用程序的defaultTimeZone 中获取其值,如果未明确设置,则从systemTimeZone 中获取。有没有办法从经纬度中获取时区?
  • 未内置于系统中。您必须自己构建一些东西,也许使用date-time-zone.com 的数据文件并将用户的坐标与其中包含的时区定义进行比较。
  • 谢谢,@jenningj。再看一遍之后,我意识到做起来有多难。看起来有网络服务可以做到这一点,但我明白为什么大多数应用程序只是要求你告诉他们时区,或者从城市列表中获取。
【解决方案2】:

这实际上是不可能的,除非日期实际上包含在输入中。为什么?因为偏移量随时间变化。最常见的是,在北美切换到夏令时,在欧洲切换到夏令时。不同的位置在不同的时间进行切换。此外,用于确定何时进行切换的公式会随时间而变化。例如,几年前在美国,夏令时延长了。然后你有像危地马拉这样的地方尝试过几次夏令时,然后决定明年不这样做。

底线,GPS 坐标和时区之间没有一对一的关系。但是,坐标+日期和时区之间存在一对一的关系。但它是一个移动的目标。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-10
    • 1970-01-01
    • 1970-01-01
    • 2015-03-28
    • 2019-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多