关于时区:网络服务 – 城市的当前时区?

Web service - current time zone for a city?

是否有某种类型(或任何其他方式)的Web服务来获取(美国)城市的当前时区设置。对于不遵守夏令时和基本上跳过时区的部分国家,当其他人都在切换夏令时/冬令时…我不想创建自己的数据库,来记录那些不遵循DST的地方。有没有办法按需提取这些数据?

我需要数据库服务器(而不是客户机工作站)使用它——数据库中存储的实体具有城市、状态为属性。我需要随时知道这些实体的当前时区。


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

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

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

http://maps.googleapis.com/maps/api/geocode/json?地址=旧金山,+CA&SENSOR=FALSE

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

1
2
3
4
"location": {
   "lat":  37.77492950,
   "lng": -122.41941550
}

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

https://maps.googleapis.com/maps/api/timezone/json?位置=37.77492950,-122.41941550×tamp=1331161200&sensor=false

返回当前时区信息:

1
2
3
4
5
6
7
{
         "status":"OK",
      "dstOffset":  0.0,
      "rawOffset": -28800.0,              
     "timeZoneId":"America/Los_Angeles",
   "timeZoneName":"Pacific Standard Time"
}

一个地区的时区可能因各种原因而改变。因此,最好找到一个基于服务器的权威解决方案,而不是缓存。有关更多信息,请参阅维基百科的时区文章。


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

http://www.earthtools.org/webservices.htm时区

您只需按如下方式传递long/lat值:(这是给纽约的)

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

编辑:

似乎地球工具已经关闭了。谷歌时区API是一个不错的选择(在2008年这个问题被回答时还不存在)。要使用它,您必须首先激活您帐户上的时区API。如果您低于这些限制,它是免费的:

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

该文档可在谷歌开发人员那里获得。


geonames.org有一套很好的世界数据,可通过webservice或下载获得:

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

特别地

http://www.geonames.org/export/web services.html时区

.


地球工具的时区信息不是最新的…例如,斯里兰卡当前的偏移距格林尼治标准时间为+5.5,但EarthTools显示为+6,这是2005年之前的旧偏移距。

我建议geonames.org。


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

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


万一有人碰到这个问题。

  • 你可以使用google api来搜索地址。返回纬度/逻辑。有了这些值,您可以使用PHP等工具找到最近的时区。

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

https://timezoneapi.io/developers/address/开发人员/地址


简单脱机库:apTimeZones

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

这里有一个名为apTimeZones(git已连接)的库romalterplay,它允许您从给定位置提取nsTimeZone,而无需连接到远程服务。apTimeZones通过查询本地时区列表(包含在库中)工作。


谷歌,每天2500个免费请求https://developers.google.com/maps/documentation/timezone网站/


我知道这是答案,但我发布这个答案,因为人们可能仍然认为它是有用的-所选的答案目前不起作用。

谷歌有自己的服务,这是非常可靠和易于使用,并输出信息的JSON格式。它甚至允许指定自定义时间,例如获取2013年2月2日在马耳他的时区。

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


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

[编辑]…但是,基于olson数据库的更准确的信息(包括来源)可以在这里找到:http://en.wikipedia.org/wiki/tz_database