从纬度和经度获取 Windows TimeZoneInfo

2024-04-28

在网络应用程序中,我让人们输入他们的地址,然后我使用Google 的地理编码 API获取他们的纬度和经度。接下来,我想得到他们的Windows 时区名称使用这些坐标,这样我就可以处理夏令时正确通过.NetTimeZoneInfo object.

我玩过几个可用的时区网络服务获取时区名称,例如:

  • http://www.askgeo.com/ http://www.askgeo.com/
  • http://www.geonames.org/ http://www.geonames.org/
  • http://www.earthtools.org/ http://www.earthtools.org/

问题是这些都只返回与 GMT 的偏移量,或者 TZID(又名 Olson)时区名称,不是 Windows 时区名称.

以下链接中有一个列表翻译从 Windows 到 TZID 名称,但不是相反的方向,因为许多 TZID 名称丢失。例如,如果我从第一步获得的 TZID 是“非洲/卢萨卡”,则该表将找不到等效的 Windows 时区名称。

  • Windows -> TZID: http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/zone_tzid.html http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/zone_tzid.html
  • TZID -> Windows: ???

所以我的问题是,有谁知道可以通过纬度/经度返回 Windows 时区名称的服务或者是否有完整的列表或翻译服务可以在两种命名格式之间进行转换?

Note:我在这里回顾了所有类似的问题,但没有一个完全解决了这个问题。


一种解决方法是获取 Olson 名称,然后使用野田时间 http://noda-time.googlecode.com执行相关时区计算,因为这是基于 Olson 名称的。

我们还没有完全“完成”Noda Time,但我们越来越接近 1.0 版本 - 如果您愿意,您可以随时将自己限制在时区部分,并在 .NET 中完成其余的工作。这会将您与我们仍在整理的任何领域隔离开来,例如格式化、解析以及用于执行算术的最佳 API。诚然,我希望 API 的其余部分能够吸引您并吸引您参与……或者您希望对其发表评论并告诉我们您的想法want使用它:)

我希望添加DateTime and DateTimeOffset在接下来的几天内转换为代码库 - 如果您可以 ping 邮件列表并提供您所需要的内容,我可以尽力满足您的需求。

抱歉,这只是一个解决方法,而不是完整的修复。我将研究在 Noda Time 中提供更多 Windows 区域名称映射信息 - 也使用 CLDR,但通过 Olson 数据库中的更多信息,我们也许能够轻松找到等效项。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从纬度和经度获取 Windows TimeZoneInfo 的相关文章

随机推荐