是否有某种(或任何其他方式)的网络服务来提取(美国)城市的当前时区设置。对于该国不遵循夏令时并且在其他人都在切换夏季/冬季时间时基本上会跳转时区的部分地区......我不喜欢创建自己的不遵循 DST 的地方的数据库。有没有办法按需提取这些数据?
我需要这个用于数据库服务器(而不是客户端工作站) - 存储在数据库中的实体具有 City、State 作为属性。我需要随时知道这些实体的当前时区。
是否有某种(或任何其他方式)的网络服务来提取(美国)城市的当前时区设置。对于该国不遵循夏令时并且在其他人都在切换夏季/冬季时间时基本上会跳转时区的部分地区......我不喜欢创建自己的不遵循 DST 的地方的数据库。有没有办法按需提取这些数据?
我需要这个用于数据库服务器(而不是客户端工作站) - 存储在数据库中的实体具有 City、State 作为属性。我需要随时知道这些实体的当前时区。
我们遇到了同样的问题,除了上面的好建议外,谷歌似乎有两个互补的 API,一个用于来自地理编码(纬度/经度)数据的时区和地理编码 API。
例如,要获取旧金山的时区和偏移量:
http://maps.googleapis.com/maps/api/geocode/json?address=San%20Francisco,+CA&sensor=false
地理编码位置在 JSON 返回数据中:
"location": {
"lat": 37.77492950,
"lng": -122.41941550
}
返回当前时区信息:
{
"status": "OK",
"dstOffset": 0.0,
"rawOffset": -28800.0,
"timeZoneId": "America/Los_Angeles",
"timeZoneName": "Pacific Standard Time"
}
一个地区的时区可能会因多种原因而改变。所以最好找一个权威的基于服务器的解决方案而不是缓存。有关更多信息,请参阅Wikipedia 的时区文章。
earthtools.org 提供了一个免费的网络服务来从这里获取一个城市的时区:
http://www.earthtools.org/webservices.htm#timezone
您只需像这样传入 long/lat 值:(这是针对纽约的)
http://www.earthtools.org/timezone-1.1/40.71417/-74.00639
编辑:
好像earthtools 已经关闭了。Google Time Zone API 是一个不错的选择(在 2008 年回答这个问题时不存在)。要使用它,您必须首先在您的帐户上激活 Time Zone API 。如果您保持在以下限制以下,则免费:
该文档可在 Google Developers 上找到。
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 年之前的旧偏移量。
我建议GeoNames.org。
WorldTimeServer.com似乎有一个综合时区数据库,您可以购买各种格式的访问权限,包括用于 Web 的 .NET 组件。
没有联系,只是最近自己研究了同样的事情。
简单的离线库:APTimeZones
为了找到某个位置的时区,您可以使用 Google Maps API 的时区 API。不幸的是,这需要您查询远程服务,并且您会受到它们的限制。
这是一个名为APTimeZones的库 rom Alterplay (已附加 Git),它允许您从给定位置提取 NSTimeZone 而无需连接到远程服务。 APTimeZones通过查询本地时区列表(包含在库中)来工作。
万一有人碰到这个问题。
您可以使用 Google API 搜索地址。这将返回纬度/对数。有了这些值,您可以使用例如 PHP 找到最近的时区。
或者您可以使用类似 timezoneapi.io 的 API(我支持它),它使您能够搜索地址/城市/国家/地区。它返回给定时区的地址、时区信息和当前日期/时间。
我知道这已得到解答,但我发布此答案是因为人们可能仍然觉得它有用 - 所选答案现在无法成功运行。
Google 有自己的服务,非常可靠且易于使用,并以 JSON 格式输出信息。它甚至允许指定自定义时间,例如获取马耳他 02/02/2013 的时区。