网络服务 - 城市的当前时区?

时间:2008-09-11 06:30:05

标签: web-services timezone

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

我需要这个用于数据库服务器(不适用于客户端工作站) - 存储在数据库中的实体具有City,State作为属性。我需要在任何时刻知道这些实体的当前时区。

10 个答案:

答案 0 :(得分:68)

我们遇到了同样的问题,除了上面的好建议外,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"
}

某个地区的时区可能因各种原因而发生变化。因此,最好找到基于服务器的权威解决方案,而不是缓存。有关详细信息,请参阅Wikipedia's Time Zone article

答案 1 :(得分:42)

earthtools.org提供免费的网络服务,以便从这个城市获取时区:

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

你只需传递这样的长/纬度值:(这是纽约的)

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


修改

似乎地球工具已被关闭。一个很好的替代方案(2008年这个问题得到解答时不存在)是Google时区API。要使用它,您必须先在帐户中activate the Time Zone API。如果你低于这些限制,它是免费的:

  • 每24小时2500次请求。
  • 每秒5次请求。

The documentation可在Google Developers上找到。

答案 2 :(得分:15)

Geonames.org提供了一系列精彩的世界数据,可通过网络服务或下载获得:

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

特别是

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

答案 3 :(得分:7)

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

我建议GeoNames.org

答案 4 :(得分:5)

WorldTimeServer.com似乎是一个全面的时区数据库,您可以购买各种格式的访问权限,包括用于Web的.NET组件。

没有联系,最近我必须自己研究同样的事情。

答案 5 :(得分:1)

简单离线库:APTimeZones

要查找您可以使用的地理位置的时区,例如Google Maps API的时区API。不幸的是,这要求您查询远程服务,并且您受到限制。

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

答案 6 :(得分:1)

如果有人碰到这个问题。

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

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

https://timezoneapi.io/developers/address

答案 7 :(得分:0)

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

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

答案 8 :(得分:0)

我知道这已经得到了解答,但是我发布了这个答案,因为人们可能仍然觉得它很有用 - 所选答案现在不能成功。

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

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

答案 9 :(得分:0)