Получите Windows TimeZoneInfo от Широты и Долготы - PullRequest
13 голосов
/ 17 августа 2011

В веб-приложении люди вводят свой адрес, затем я использую API геокодирования Google , чтобы получить их широту и долготу.Затем я хотел бы получить их имя часового пояса Windows , используя эти координаты, чтобы я мог правильно обрабатывать Летнее время через объект .Net TimeZoneInfo.

Я играл с несколькими из доступных веб-служб часовых поясов , чтобы получить название часового пояса, например:

Проблема в том, что все они возвращают либо только смещение от GMT, либо имя часового пояса TZID (он же Олсон), не имя часового пояса Windows.

В этой следующей ссылке есть список, который переводит из Windows в имена TZID, но не в обратном направлении, поскольку многие из имен TZID отсутствуют.Например, если TZID, полученный на первом этапе, называется «Африка / Лусака», то в таблице не будет найдено эквивалентного имени часового пояса Windows.

Итак, мой вопрос, кто-нибудь знает ослужба, которая может возвращать имя часового пояса Windows через широту / долготу или если существует полный список или служба перевода для преобразования между двумя форматами именования *

Примечание: Я рассмотрел все подобные вопросы здесь, но ни один полностью не решил эту проблему.

Ответы [ 2 ]

3 голосов
/ 17 августа 2011

Один из обходных путей - получить имя Олсона, а затем использовать Время Ноды для выполнения соответствующих расчетов часового пояса, поскольку оно основано на именах Олсона.

Мы еще не совсем "закончили" с Noda Time, но мы приближаемся к версии 1.0 - и вы всегда можете ограничиться частью часового пояса, если хотите, и сделать все остальное. СЕТЬ. Это изолировало бы вас от любых областей, которые мы до сих пор сортируем, таких как форматирование, анализ и лучший API, который можно использовать для выполнения арифметики. По общему признанию я хотел бы надеяться, что остальная часть API обращается к вам и побуждает вас ... или что вы хотели бы прокомментировать это и сказать нам, как вы хотите использовать его :)

Я надеюсь добавить DateTime и DateTimeOffset преобразований в кодовую базу в ближайшие пару дней - если вы можете пропинговать список рассылки именно тем, что вам нужно, я могу попытаться удовлетворить вас.

Извините, что это всего лишь обходной путь, а не полное исправление. Я рассмотрю вопрос о предоставлении дополнительной информации о сопоставлении имен зон Windows в Noda Time, которая также использует CLDR, но с помощью дополнительной информации из базы данных Olson мы можем легко найти эквиваленты.

0 голосов
/ 17 августа 2011

Только что нашел это онлайн, что может быть решением.Будем дополнительно расследовать:

http://www.timdavis.com.au/data/olson-time-zone-database-to-standard-windows-time-zone-v01/

...