将地址映射到Windows时区
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将地址映射到Windows时区相关的知识,希望对你有一定的参考价值。
我正在研究如何将地址等位置映射到Windows时区格式。例如,如果地址包含哥本哈根市,那么服务应该将其映射到(UTC+01:00)布鲁塞尔、哥本哈根、马德里、巴黎。
如果地址包含一个靠近维也纳的城市,那么它应该映射到(UTC+01:00)阿姆斯特丹、柏林、伯尔尼、罗马、斯德哥尔摩、维也纳。
我研究了Google的GeoCoding和TimeZone APIs,但它只给我时区的名称,比如 "中欧时间"。
这是一个多步骤的过程。
确定地点的经纬度坐标。
- 你提到了谷歌的地理编码API。 这将做得很好,还有其他几个选择。
从这些坐标中确定时区标识符,用 这些方法中的任何一种.
- 在大多数情况下,你会收到一个IANA时区标识符,如
"Europe/Vienna"
. 你提到了谷歌时区API--它将在timeZoneId
领域(不timeZoneName
).
- 在大多数情况下,你会收到一个IANA时区标识符,如
使用IANA时区标识符获得.NET的
TimeZoneInfo
对象。如果你在非Windows平台(Linux、OSX等)上运行.NET,你可以获得一个
TimeZoneInfo
直接从IANA时区标识符中获取对象。// This will work on platforms that use IANA time zones natively TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById("Europe/Vienna");
如果你在Windows上运行.NET,或者想把你的应用程序写成在Windows上运行。任何 平台,然后用我的 时区转换器 库来检索
TimeZoneInfo
对象,那么TimeZoneConverter也可以做到这一点。// This will work on any platform TimeZoneInfo tzi = TZConvert.GetTimeZoneInfo("Europe/Vienna");
如果你真的需要一个Windows时区标识符,那么TimeZoneConverter也可以做到。
string tz = TZConvert.IanaToWindows("Europe/Vienna");
//=> "W. Europe Standard Time"
另外,如果你想得到真正的字符串 "(UTC+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna"
那么,。
如果是在Windows上,并且Windows操作系统的locale是: 英文,然后你就可以得到
.DisplayName
来自TimeZoneInfo
对象。在所有其他情况下,你可以跳过上面的第3步,只用我的 时区名称 库,它有所有语言的所有显示名称。
string displayName = TZNames.GetDisplayNameForTimeZone("Europe/Vienna", "en");
另外,你可以考虑使用 野田时间 而非 TimeZoneInfo
对象。
以上是关于将地址映射到Windows时区的主要内容,如果未能解决你的问题,请参考以下文章