2011-11-02 17 views
9

私は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

lat/lonは[これらの方法](http://stackoverflow.com/a/16086964/634824) –

答えて

9

を参照してください。最後に、長い研究の後、私は解決策を見つけました。あまり正確ではないかもしれませんが、リモートサービスの依存関係は必要ありません。

私は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/ 私はそれを少し編集し、それを.NETから読み込むためにCSVファイルに変換しました。

誰かを助けることを願っています。

+1

あなたの答えを受け入れることを忘れないでください。それは[あなた自身の質問に答えることができます](http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/ )。 –

2
+0

ありがとうございます。面白いサービス。私は将来的に1M人以上の受信者を持つことができるため、オフラインベースのアプローチを試してみる予定ですが、このソリューションは非常に便利です。 – VirusX

+0

@VirusX - 何百万というリクエストについて話していると、無料サービス。もちろん、Javascriptは無料で、あなたがコントロールできるjavascriptページを持つページへのHTTPリクエストを使用するだけで、これを行うことができます。 –

+0

@Ramhound - 上記のとおり、リクエストの性質上、javascriptをここで使用することはできません。ビーコンURLは 'img'タグの' src'パラメータに含まれています。ユーザーが電子メールメッセージを開くと、リクエストは私たちのサービスに送られます。私たちが持っているのは、httpヘッダと受信者のIPアドレスだけです。何百万というもの - 一般的に1分または1時間に何百万というリクエストを意味するわけではありませんが、1秒あたりのリクエスト数はそれ以上であることは間違いありません。だから、私が言ったように、私はそれを行うためにいくつかのオフラインデータベースを見つけようとしています。 – VirusX

1

あなたはmaxmindのAPIからDatabaseReaderオブジェクトを使用している場合は、あなたがで返されるオブジェクトから取得することができます属性location.timeZoneがすでに存在している中でそれは...

この質問を頼まれたので、しばらくしているが、他の人を助けるかもしれませんGeoIPクラス、maxmindからAPI docsをチェックしてください。

+0

うん、2011年GeoIP2は存在しませんでした。今、そこには単純なAPIがあります。 – VirusX

関連する問題