Получить часовой пояс по странам и регионам
Я разрабатываю рассылку новостей на платформе С#/. 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-подход для определения смещения по времени.
Может быть, я могу как-то определить часовой пояс, используя название страны и региона?
Ответы
Ответ 1
Наконец, после долгих исследований я нашел решение. Он может быть не очень точным, но он не требует зависимости удаленного сервиса.
Я обнаружил, что база данных maxmind предоставляет файл сопоставления между регионами и часовыми поясами из базы данных Olsen (aka tz database): 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
См. следующие ссылки
http://johnwsaundersiii.spaces.live.com/blog/cns!600A2BE4A82EA0A6!657.entry
Как получить информацию о часовом поясе для страны?
Ответ 3
Прошло некоторое время с тех пор, как был задан этот вопрос, но может помочь другим.
Когда вы используете объект DatabaseReader из maxmind API, в нем уже есть атрибут location.timeZone
, вы можете получить его из объекта, возвращаемого классом GeoIP, проверить API docs от maxmind.