我有一份城市,州/省和国家列表,我需要轻松找到各自的时区.具体来说,我需要知道他们映射到哪个Windows TimeZone.到目前为止,这是一个艰难的过程,因为没有简单的方法可以将城市传递给某个东西并获得时区(时区是一个偏移量,时区是否支持夏令时).
目前的流程是使用http://www.batchgeocode.com获取城市的纬度/经度(真正称为雅虎服务),然后拨打http://www.EarthTools.org获取时区信函,映射到偏移量.问题是雅虎服务有时会返回不良的经度/纬度,而earthtools.org对DST信息知之甚少,因此映射到正确的TimeZone Id是一个繁琐的手动过程.
我不能成为第一个做到这一点的人 - 有没有人知道更好的方法,或者有哪些列表有我需要的信息?
谢谢.
有趣的问题!这些其他三个SO帖子(41504,55901和237023)提到了几个线索.有Olson数据库(请参阅维基百科条目中的描述),但它看起来更算法/程序化(例如,如果您知道一个县名,那么对于印第安纳州的某些县有一个规则).
我试着看看EarthTools,但它没有成为St.Pierre/Miquelon,这是一个很好的测试案例(-3:00而不是附近纽芬兰的-3:30,这是EarthTools所说的).
一些有前途的选择:worldtimeengine.com有一个免费的交互式版本和一个看起来很便宜的API(每英镑5000个查询),但API只包括lat,long查询作为输入(不是位置作为输入,这是交互式的东西)版本有).
最佳领先:我看看geonames.org,看起来它有一个很好的丰富的API,你可以使用,他们有一个免费(慢)版本和商业版本,以获得更好的性能.
PS这里有一些很好的测试案例(从worldtimezone.com和维基百科的时区的列表中,时区的地图也说明了):
加拉加斯,委内瑞拉(-4:30)
甘德,纽芬兰(-3:30)
伊朗德黑兰(+3:30)
阿富汗喀布尔(+4:30)
尼泊尔加德满都(+5:45)
仰光,缅甸(+6:30)
查塔姆群岛,新西兰(+12:45)
复活节岛(-6)
圣皮埃尔和密克隆(-3)
斯坦利,福克兰群岛(-4)
印第安纳州埃文斯维尔(-6 =中部)
安大略省,俄勒冈州(-7 =山)