按国家和地区获取时区

Vir*_*usX 11 c# timezone

我正在开发一个在C#/ .NET平台上发送应用程序的新闻通讯.我最近添加了模块,使用maxmind.com数据库通过IP地址检索收件人的国家和地区.

例如,我可以获得一些示例IP地址的以下信息:

Country Code: DE
Country Name: Germany   
Region Name:  Hessen 
City:         Frankfurt Am Main
Latitude:     50.1167
Longitude:    8.6833 
Run Code Online (Sandbox Code Playgroud)

我现在需要的是使用此信息获取用户的时区.

我知道有一些GeoIp数据库也提供了时区,但我需要使用这个具体的GeoIp数据库.此外,这里不能使用javascript确定时间偏移的方法.

可能我可以使用国家和地区名称以某种方式得到时区?

Vir*_*usX 10

最后,经过长时间的研究,我找到了解决方案.它可能不太准确,但它不需要远程服务的依赖性.

我发现maxmind的数据库提供了来自Olsen数据库(也就是tz数据库)的区域和时区之间的映射文件:http://www.maxmind.com/timezone.txt

第二步是在.NET时区中转换Olsen时区.最合适的解决方案在这里找到:http://www.timdavis.com.au/data/olson-time-zone-database-to-standard-windows-time-zone-v01/ 所以我编辑了一下并将其转换为CSV文件以从.NET读取它.

希望它会对某人有所帮助.

  • 请记住接受您的答案,因为[可以回答您自己的问题](http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/) 。 (2认同)