题
是否有某种(或任何其他方式)的网络服务来提取(美国)城市的当前时区设置。对于该国那些不遵循夏令时并且基本上在其他人都在切换夏季/冬季时间时跳跃时区的部分地区......我不想为不遵循夏令时的地方创建自己的数据库。有没有办法按需提取这些数据?
我需要这个用于数据库服务器(不适用于客户端工作站) - 数据库中存储的实体具有城市、州作为属性。我需要随时了解这些实体的当前时区。
解决方案
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) 将地理编码位置转换为本地时区和偏移量(如果有):
它返回当前时区信息:
{
"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 组件。
没有联系,只是最近我自己研究了同样的事情。
万一有人遇到这个问题。
您可以使用 Google API 来搜索地址。返回纬度/经度。有了这些值,您可以使用例如找到最近的时区。PHP。
或者您可以使用像 timezoneapi.io 这样的 API(我在后面),它使您能够搜索地址/城市/国家/地区。它返回地址、时区信息以及给定时区的当前日期/时间。
我在这里找到了一个免费可下载的数据库: http://citytimezones.info/
编辑] ...但基于 Olson DB 的更准确信息(包括来源)可以在此处找到: http://en.wikipedia.org/wiki/Tz_database
我知道这个问题已经得到解答,但我发布这个答案是因为人们可能仍然会发现它有用 - 所选答案现在无法成功工作。
Google 有自己的服务,非常可靠且易于使用,并以 JSON 格式输出信息。它甚至允许指定自定义时间,例如获取马耳他 02/02/2013 的时区。
Google,每天 2500 个免费请求https://developers.google.com/maps/documentation/timezone/