在网络应用中,我让人们输入他们的地址,然后我使用 Google的地理编码API 来获取他们的经度和经度。接下来,我想使用这些坐标获取 Windows时区名称,以便通过.Net TimeZoneInfo
对象正确处理夏令时。 / p>
我使用了几个可用的时区网络服务来获取时区名称,例如:
问题是这些都只返回GMT的偏移量,或TZID(a.k.a。Olson)时区名称,而不是Windows时区名称。
以下链接列出了从Windows转换到TZID名称,但由于缺少许多TZID名称,因此没有相反的方向。例如,如果我从第一步获得的TZID是“Africa / Lusaka”,那么该表将找不到等效的Windows时区名称。
所以我的问题是, 有没有人知道可以通过lat / lon 返回Windows时区名称的服务,或者是否有完整的商家信息或翻译服务在两种命名格式之间进行转换?
注意:我在这里已经审核了所有类似的问题,但没有一个完全解决了这个问题。
答案 0 :(得分:3)
一种解决方法是获取Olson名称,然后使用Noda Time执行相关的时区计算,因为这基于Olson名称。
我们还没有完成Noda Time的“完成”,但我们越来越接近1.0版本了 - 如果你愿意的话,你可以随时将自己限制在时区部分,并完成剩下的工作。净。这将使您与我们仍在整理的任何区域隔离,例如格式化,解析以及为执行算法而公开的最佳API。不可否认,我希望API的其余部分能够吸引您,并吸引您...或者您想对其进行评论并告诉我们您想要使用的方式它:)
我希望在接下来的几天内将DateTime
和DateTimeOffset
次转化添加到代码库中 - 如果您可以根据需要ping邮件列表,我可以尝试为您提供服务
道歉,这只是一种解决方法而不是完整修复。我将研究在Noda Time中提供更多Windows区域名称映射信息 - 它也使用CLDR,但是通过Olson数据库中的更多信息,我们可以轻松找到等价物。
答案 1 :(得分:0)
刚刚在网上发现这可能是一个解决方案。将进一步调查:
http://www.timdavis.com.au/data/olson-time-zone-database-to-standard-windows-time-zone-v01/