按国家和地区获取时区

问题描述:

我正在开发一个在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的方法来确定时间偏移量不能在这里使用。

可能我可以通过国家和地区名称获取时区吗?

+0

您可以使用任何[这些方法]经纬度(http://*.com/a/16086964/634824) –

最后,长期的研究后,我已经找到了解决办法。它可能不太准确,但它不需要远程服务的依赖。

我发现的MaxMind的数据库提供了从奥尔森数据库地区和时区之间的映射文件(又名TZ数据库):http://www.maxmind.com/timezone.txt

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

希望它能帮助别人。

+1

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

+0

谢谢。有趣的服务。我会尝试寻找一些基于离线的方法,因为我们未来可以拥有超过1M个收件人,但这种解决方案对我的情况非常有用 – VirusX

+0

@VirusX - 如果您谈论数百万个请求,您将很难找到免费服务。当然,Javascript会是免费的,你可以通过很多方式来做到这一点,包括简单地使用HTTP请求到你的控制下的JavaScript页面上。 –

+0

@Ramhound - 正如我上面提到的那样,由于请求的性质,JavaScript不能在这里使用。信标网址包含在'img'标签的'src'参数中。当用户打开电子邮件时,请求将发送给我们的服务。我们所有的都是http头和收件人的IP地址。关于数百万 - 通常它不意味着每分钟或每小时的数百万次请求,但它绝对可以超过每秒几次请求。所以,正如我所说,我试图找到一些离线数据库来做到这一点。 – VirusX

这已经有一段时间,因为这个问题被问过,但可能帮助别人..

当您使用DatabaseReader对象从的MaxMind API在那里早已属性location.timeZone您可以通过返回的对象检索GeoIP Class,请查看maxmind的API docs

+0

是的,2011年GeoIP2不存在。现在有一个简单的API。 – VirusX