【问题标题】:How can I determine the IANA timezone of a specific location如何确定特定位置的 IANA 时区
【发布时间】:2021-03-10 17:27:12
【问题描述】:

是否有(免费)网络服务,我可以在其中 a) 给它一个地址(完整地址或城市、州/省和邮政编码),以及 b) 获取该地址的 IANA 时区?

用例:我有一个用户管理诊所的表单。每个诊所都有一个地址。我想预先选择该地址的 IANA 时区,以便调整与该诊所相关的预约日期/时间。

我知道 Google Maps API 和 Bing Maps API 可以为我提供地址的纬度/经度,并且还有其他服务可以根据纬度/经度为我提供 IANA TZ。也就是说,这些 api 需要订阅、密钥和合约,并且还需要两种请求方法来获取单个数据。

【问题讨论】:

  • 是在全球范围内,还是仅在美国? (你提到邮政编码)
  • 另外,对于您提到的第二部分,还有离线解决方案。见stackoverflow.com/a/16086964/634824
  • @MattJohnson-Pint 从美国及其领土开始,但最终走向全球。是的,即使在查看了该列表中的项目之后,一切似乎都是一个两步解决方案。地理位置的东西是基于订阅的,而 TZ 端可以是自托管的或订阅的。

标签: api web-services timezone location iana


【解决方案1】:

地址地理位置是一个困难的问题。它需要对地址系统有深入的了解,并对不断变化的、真实的、混乱的场景做出反应。

例如,您可以获得美国邮政编码及其大致位置的数据库,但它只是一个快照。随着时间的推移,您会发​​现您的数据中会添加和丢失新的邮政编码,并且现有的邮政编码已经扩展到包括其他区域。您还会发现许多“不可定位”的邮政编码,例如用于向海外军队发送邮件的邮政编码。您甚至可以找到一个邮政编码,其地址位于两个不同的时区。

考虑到国际问题,您会发现各种极端情况。每个国家和地区都有自己的特殊规则和情况。

这是一个值得向服务提供商付费的问题。尝试以离线方式进行地理定位可能可能,但不建议这样做

第二部分 - 弄清楚哪个时区去一个位置,也很混乱。但是协调起来稍微容易一些。 Time Zone Boundary Builder 是尝试这样做的主要开源项目。大多数库referenced here 使用该数据。但即便如此,它也有更新并依赖于 Open Street Map 数据建立的边界。其中一些边界存在争议,因此谷歌、微软或其他公司的服务可能会给出不同的结果,因为它们的地图数据具有不同的边界。如果您关心这些事情,那么您可能希望针对不同的提供者测试一些边缘案例,看看您是否对结果感到满意。您可能会发现 TZBB 数据运行良好,或者您可能更喜欢其中一种在线解决方案。

【讨论】:

    猜你喜欢
    • 2013-01-07
    • 2021-01-20
    • 1970-01-01
    • 2020-05-27
    • 1970-01-01
    • 2015-03-25
    • 1970-01-01
    • 1970-01-01
    • 2022-08-09
    相关资源
    最近更新 更多