Web服务 – 当前的城市时区?
是否有某种networking服务(或任何其他方式)拉(美国)城市的当前时区设置。 对于那些不遵循夏令时的国家来说,当别人正在转换夏令时/冬令时的时候,基本上都会跳时区…我不喜欢创build自己的数据库,而这些数据库并不遵循夏令时。 有没有办法根据需要提取这些数据?
我需要这个数据库服务器(不适用于客户端工作站) – 存储在数据库中有城市,国家作为属性的实体。 我需要知道这些实体在任何时刻的当前时区。
earthtools.org提供一个免费的networking服务来从这里的城市获得时区:
http://www.earthtools.org/webservices.htm#timezone
你只要传递像这样的长/纬度值:(这是纽约)
http://www.earthtools.org/timezone-1.1/40.71417/-74.00639
编辑:
土工材料似乎已经closures了。 一个很好的select(这个问题在2008年就不存在了)是Google时区API。 要使用它,您必须先在您的账户上激活时区API 。 如果你停留在这些限制之下,这是免费的:
- 每24小时2500个请求。
- 每秒5个请求。
该文档可在Google Developers上find。
我们遇到了同样的问题,除了上面的重要build议外,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)将地理编码的位置转换为本地时区和偏移量(如果有):
哪个返回当前时区信息:
{ "status": "OK", "dstOffset": 0.0, "rawOffset": -28800.0, "timeZoneId": "America/Los_Angeles", "timeZoneName": "Pacific Standard Time" }
一个地区的时区可能因各种原因而改变。 因此,find一个权威的基于服务器的解决scheme而不是caching是个好主意。 欲了解更多信息,请参阅维基百科的时区文章 。
Geonames.org有一个很好的一套世界上的数据,可通过web服务或下载:
http://www.geonames.org/export/ws-overview.html
尤其是
http://www.geonames.org/export/web-services.html#timezone
。
Earthtool的时区信息不是最新的…例如,斯里兰卡当前的偏移量是GMT的+5.5,但是EarthTools显示的是+6,这是2005年之前的旧偏移量。
我build议GeoNames.org 。
WorldTimeServer.com似乎是一个全面的时区数据库,您可以购买各种格式的访问,包括Web组件。
没有关系,最近我只好自己研究同样的事情。
简单的离线库: APTimeZones
为了find您可以使用的位置的时区,例如Google Maps API的时区API。 不幸的是,这需要你查询一个远程服务,你受限于他们。
这里有一个名为APTimeZones (Git附件)的Alterplay库,它允许你从给定的位置提取NSTimeZone,而不需要连接到远程服务。 APTimeZones通过查询本地时区列表(包含在库中)工作。
如果有人碰到这个问题。
-
您可以使用Google APIsearch地址。 这返回纬度/经度。 有了这些值,你可以find最接近的时区,例如PHP。
-
或者你可以使用像timezoneapi.io(我在后面),这使您可以search地址/城市/国家的API。 它返回给定时区的地址,时区信息和当前date/时间。
我在这里find了一个免费的可下载数据库: http : //citytimezones.info/
[编辑] …但更准确的信息(包括来源)基于Olson数据库可以在这里find: http : //en.wikipedia.org/wiki/Tz_database
我知道这是回答,但我发布这个答案,因为人们可能仍然觉得它有用 – 选定的答案现在不成功工作。
谷歌有自己的服务,这是非常可靠和易于使用,并以JSON格式输出信息。 它甚至允许指定一个自定义时间,例如在02/02/2013在马耳他获得时区。
Google,每天2500个免费请求https://developers.google.com/maps/documentation/timezone/