如时区标签wiki中所述,有两种不同的时区样式.
Microsoft提供的用于Windows和.Net TimeZoneInfo类的那些由诸如的值标识"Eastern Standard Time".
IANA在TZDB中提供的内容由诸如此类的值标识TimeZoneInfo.
许多基于Internet的API使用IANA时区,但由于多种原因,可能需要将其转换为Windows时区ID,反之亦然.
如何在.Net中实现这一目标?
在网络应用中,我让人们输入他们的地址,然后我使用Google的地理编码API来获取他们的经度和经度.接下来,我想使用这些坐标获取他们的Windows时区名称,以便我可以通过.Net 对象正确处理夏令时TimeZoneInfo.
我使用了几个可用的时区Web服务来获取时区名称,例如:
问题是这些都返回GMT的偏移量,或TZID(又名Olson)时区名称,而不是Windows时区名称.
此后续链接中有一个列表,它从Windows 转换为TZID名称,但不是相反的方向,因为缺少许多TZID名称.例如,如果我从第一步获得的TZID是"Africa/Lusaka",那么该表将找不到等效的Windows时区名称.
所以我的问题是,是否有人知道可以通过lat/lon返回Windows时区名称的服务,或者是否有完整的列表或翻译服务可以在两种命名格式之间进行转换?
注意:我在这里已经审查了所有类似的问题,但没有一个完全解决了这个问题.
我正在使用NodaTime,因为它对zoneinfo数据有很好的支持,但我有一个案例需要将其DateTimeZone转换TimeZoneInfo为在Quartz.NET中使用.
这里推荐的方法是什么?IANA在Windows时区和zoneinfo时区之间有一个映射文件,我可以创建一个利用此信息的扩展方法吗?
谢谢,迪恩