按国家和地区获取时区
我正在开发一个在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的数据库提供了从奥尔森数据库地区和时区之间的映射文件(又名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中读取。
希望它能帮助别人。
请记住接受你的答案,因为它[可以回答你自己的问题](http://blog.*.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/ )。 –
谢谢。有趣的服务。我会尝试寻找一些基于离线的方法,因为我们未来可以拥有超过1M个收件人,但这种解决方案对我的情况非常有用 – VirusX
@VirusX - 如果您谈论数百万个请求,您将很难找到免费服务。当然,Javascript会是免费的,你可以通过很多方式来做到这一点,包括简单地使用HTTP请求到你的控制下的JavaScript页面上。 –
@Ramhound - 正如我上面提到的那样,由于请求的性质,JavaScript不能在这里使用。信标网址包含在'img'标签的'src'参数中。当用户打开电子邮件时,请求将发送给我们的服务。我们所有的都是http头和收件人的IP地址。关于数百万 - 通常它不意味着每分钟或每小时的数百万次请求,但它绝对可以超过每秒几次请求。所以,正如我所说,我试图找到一些离线数据库来做到这一点。 – VirusX
您可以使用任何[这些方法]经纬度(http://*.com/a/16086964/634824) –