按国家和地区获取时区

我正在开发一个在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 

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

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

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

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

我发现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://johnwsaundersiii.spaces.live.com/blog/cns!600A2BE4A82EA0A6!657.entry

如何获取国家/地区的时区信息?

自问这个问题以来已经有一段时间了,但可能有助于其他人……

当您使用maxmind API中的DatabaseReader对象时,已经存在属性location.timeZone您可以从GeoIP类返回的对象中检索它,请查看maxmind上的API 文档 。