是否有某种(或任何其他方式)的网络服务来提取(美国)城市的当前时区设置。对于该国那些不遵循夏令时并且基本上在其他人都在切换夏季/冬季时间时跳跃时区的部分地区......我不想为不遵循夏令时的地方创建自己的数据库。有没有办法按需提取这些数据?

我需要这个用于数据库服务器(不适用于客户端工作站) - 数据库中存储的实体具有城市、州作为属性。我需要随时了解这些实体的当前时区。

有帮助吗?

解决方案

Earthtools.org 提供免费的网络服务来获取此处城市的时区:

http://www.earthtools.org/webservices.htm#timezone

您只需传入长/纬度值,如下所示:(这是针对纽约的)

http://www.earthtools.org/timezone-1.1/40.71417/-74.00639


编辑:

看来earthtools已经被关闭了。一个很好的替代方案(2008 年回答这个问题时还不存在)是 Google Time Zone API。要使用它,您必须首先 激活时区 API 在您的帐户上。如果您低于这些限制,则免费:

  • 每 24 小时内有 2500 个请求。
  • 每秒 5 个请求。

文档 可以在 Google Developers 上找到。

其他提示

我们遇到了同样的问题,除了上面的好建议之外,Google 似乎还有两个互补的 API,一个用于来自地理编码(纬度/经度)数据的时区,另一个用于地理编码 API。

例如,要获取旧金山的时区和偏移量:

1) 将城市转换为地理编码位置:

http://maps.googleapis.com/maps/api/geocode/json?address=San%20Francisco,+CA&sensor=false

地理编码位置位于 JSON 返回数据中:

"location": {
    "lat":  37.77492950,
    "lng": -122.41941550
}

2) 将地理编码位置转换为本地时区和偏移量(如果有):

https://maps.googleapis.com/maps/api/timezone/json?location=37.77492950,-122.41941550&timestamp=1331161200&sensor=false

它返回当前时区信息:

{
          "status": "OK",
       "dstOffset":  0.0,
       "rawOffset": -28800.0,              
      "timeZoneId": "America/Los_Angeles",
    "timeZoneName": "Pacific Standard Time"
}

某个地区的时区可能会因多种原因而发生变化。所以最好找到一个权威的基于服务器的解决方案而不是缓存。欲了解更多信息,请参阅 维基百科的时区文章.

Geonames.org 拥有一组精彩的世俗数据,可通过网络服务或下载获得:

http://www.geonames.org/export/ws-overview.html

尤其

http://www.geonames.org/export/web-services.html#timezone

.

Earthtool 的时区信息不是最新的......例如,斯里兰卡当前的偏移量为 GMT +5.5,但 EarthTools 显示为 +6,这是 2005 年之前的旧偏移量。

我建议 地名网.

世界时间服务器.com 似乎有一个综合的时区数据库,您可以购买多种格式的访问权限,包括供 Web 使用的 .NET 组件。

没有联系,只是最近我自己研究了同样的事情。

简单的离线库: AP时区

为了查找某个位置的时区,您可以使用 Google Maps API 的时区 API。不幸的是,这需要您查询远程服务,并且您会受到它们的限制。

这是 Alterplay 的一个库,名为 AP时区(Git 已附加)允许您从给定位置提取 NSTimeZone,而无需连接到远程服务。 AP时区 通过查询本地时区列表(包含在库中)来工作。

万一有人遇到这个问题。

  • 您可以使用 Google API 来搜索地址。返回纬度/经度。有了这些值,您可以使用例如找到最近的时区。PHP。

  • 或者您可以使用像 timezoneapi.io 这样的 API(我在后面),它使您能够搜索地址/城市/国家/地区。它返回地址、时区信息以及给定时区的当前日期/时间。

https://timezoneapi.io/developers/address

我在这里找到了一个免费可下载的数据库: http://citytimezones.info/

编辑] ...但基于 Olson DB 的更准确信息(包括来源)可以在此处找到: http://en.wikipedia.org/wiki/Tz_database

我知道这个问题已经得到解答,但我发布这个答案是因为人们可能仍然会发现它有用 - 所选答案现在无法成功工作。

Google 有自己的服务,非常可靠且易于使用,并以 JSON 格式输出信息。它甚至允许指定自定义时间,例如获取马耳他 02/02/2013 的时区。

https://developers.google.com/maps/documentation/timezone/

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top