Получить часовой пояс по стране и региону - PullRequest
11 голосов
/ 02 ноября 2011

Я разрабатываю приложение для рассылки новостей на платформе C # / .NET. Недавно я добавил модуль для получения страны и региона получателя по его IP-адресу с помощью базы данных maxmind.com.

Например, я могу получить следующую информацию для некоторого примера IP-адреса:

Country Code: DE
Country Name: Germany   
Region Name:  Hessen 
City:         Frankfurt Am Main
Latitude:     50.1167
Longitude:    8.6833 

Теперь мне нужно получить часовой пояс пользователя, используя эту информацию.

Я знаю, что есть некоторые базы данных GeoIp, которые также предоставляют часовой пояс, но мне нужно использовать эту конкретную базу данных GeoIp. Кроме того, подход javascript для определения смещения по времени не может быть использован здесь.

Может быть, я могу как-то узнать часовой пояс, используя название страны и региона?

Ответы [ 3 ]

10 голосов
/ 03 ноября 2011

Наконец, после долгих исследований, я нашел решение.Это может быть не очень точно, но это не требует зависимости удаленного обслуживания.

Я обнаружил, что база данных maxmind предоставляет файл отображения между регионами и часовыми поясами из базы данных Olsen (он же база данных tz): http://www.maxmind.com/timezone.txt

Вторым шагом было преобразование часовых поясов Olsen в .NETчасовые пояса.Лучшее подходящее решение было найдено здесь: http://www.timdavis.com.au/data/olson-time-zone-database-to-standard-windows-time-zone-v01/ Так что я немного отредактировал его и преобразовал в файл CSV для чтения из .NET.

Надеюсь, это кому-нибудь поможет.

2 голосов
1 голос
/ 02 июля 2014

Прошло много времени с тех пор, как этот вопрос был задан, но может помочь другим.

Когда вы используете объект DatabaseReader из maxmind API, в нем уже есть атрибут location.timeZone, который вы можете получить изобъект, возвращаемый классом GeoIP, ознакомьтесь с API docs от maxmind.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...