Подтвердить что ты не робот

Мне нужен список сопоставлений городов для timezones - лучший способ получить его?

У меня есть список городов, штатов/провинций и стран, и мне нужно легко найти их соответствующие временные точки. В частности, мне нужно знать, к какой Windows TimeZone они относятся. До сих пор это был сложный процесс, потому что нет простого способа передать город чему-то и вернуть часовой пояс (часовой пояс является смещением и зависит от того, поддерживает ли часовой пояс Летнее время).

Текущий поток должен использовать http://www.batchgeocode.com, чтобы получить широту/долготу города (который действительно вызывает службу Yahoo), а затем вызовите http://www.EarthTools.org, чтобы получить письмо с часовым поясом, которое отображает смещение. Проблема в том, что служба yahoo иногда возвращает плохую долготу/широту, а earthtools.org не знает много о DST-информации, поэтому сопоставление с правильным идентификатором TimeZone является утомительным ручным процессом.

Я не могу быть первым человеком, который сделал это - знает ли кто-нибудь о лучшем способе или какой-то список, в котором есть информация, которая мне нужна?

Спасибо.

4b9b3361

Ответ 1

Интересный вопрос! Эти три других сообщения SO (41504, 55901 и 237023) упоминают пару потенциальных клиентов. Там база данных Olson (см. запись в Википедии для описание), но он выглядит более алгоритмическим/программным (например, если вы знаете имя округа, для него есть правило для определенных стран в Indiana).

Я попробовал посмотреть на EarthTools, но не удалось для St. Pierre/Miquelon, один из хороших тестовых случаев (-3: 00, а не -3: 30 для близлежащего Ньюфаундленда, что говорит EarthTools).

Некоторые перспективные варианты: worldtimeengine.com имеет бесплатную интерактивную версию и API, который выглядит недорогим (5000 запросов на британский фунт), но API охватывает только латы, длинные запросы как входные данные (а не местоположение в качестве входных данных, что является интерактивной версией).

Лучшее руководство: Я бы посмотрел на geonames.org, который выглядит так, как будто у него есть хороший богатый API которые вы можете использовать, и у них есть бесплатная (медленная) версия и коммерческая версия для лучшей производительности.

p.s. вот несколько хороших тестовых примеров (от worldtimezone.com и Список Википедии часовых поясов, также показана карта часовых поясов ):

  • Каракас, Венесуэла (-4: 30)
  • Гандер, Ньюфаундленд (-3: 30)
  • Тегеран, Иран (+3: 30)
  • Кабул, Афганистан (+4: 30)
  • Катманду, Непал (+5: 45)
  • Янгон, Мьянма (+6: 30)
  • Острова Чатем, Новая Зеландия (+12: 45)
  • Остров Пасхи (-6)
  • St. Пьер и Микелон (-3)
  • Стэнли, Фолклендские острова (-4)
  • Эвансвилль, Индиана (-6 = Центральная)
  • Онтарио, Орегон (-7 = Гора)

Ответ 2

moment-timezone - это библиотека JavaScript для расчета часового пояса.

Все данные, привязанные к данным по временным зонам, времени и смещения, - это доступные в формате json.

Ответ 3

Мы используем .NET С# MVC, и нам нужен список Часовой пояс Windows для каждой страны.

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

Большинство онлайн-баз данных предоставляют часовые пояса IANA, и трудно сопоставить их с конкретной страной.

Используя NodaTime, нам удалось создать Json, в котором перечислены следующие записи.

CountryName
2LetterIsoCountryCode
3LetterIsoCountryCode
IANATimezones
WindowsTimezones

Вы можете скачать созданный JSON здесь.

Ответ 4

Я могу помочь со второй частью вашего текущего рабочего процесса. Я написал библиотеку Java, которая отображает lat/long в timezones, где база данных закодирована в исходном коде.

Исходный код в основном представляет собой огромное дерево операторов if: if (lat >= -33.0) if (lng < -151.5)... else... и так далее. Это всего лишь один класс. Поэтому, если вы используете С#, было бы тривиально переносить его.

http://www.edval.biz/mapping-lat-lng-s-to-timezones

Он с точностью до 22 км.