Мне нужен список сопоставлений городов для timezones - лучший способ получить его?
У меня есть список городов, штатов/провинций и стран, и мне нужно легко найти их соответствующие временные точки. В частности, мне нужно знать, к какой Windows TimeZone они относятся. До сих пор это был сложный процесс, потому что нет простого способа передать город чему-то и вернуть часовой пояс (часовой пояс является смещением и зависит от того, поддерживает ли часовой пояс Летнее время).
Текущий поток должен использовать http://www.batchgeocode.com, чтобы получить широту/долготу города (который действительно вызывает службу Yahoo), а затем вызовите http://www.EarthTools.org, чтобы получить письмо с часовым поясом, которое отображает смещение. Проблема в том, что служба yahoo иногда возвращает плохую долготу/широту, а earthtools.org не знает много о DST-информации, поэтому сопоставление с правильным идентификатором TimeZone является утомительным ручным процессом.
Я не могу быть первым человеком, который сделал это - знает ли кто-нибудь о лучшем способе или какой-то список, в котором есть информация, которая мне нужна?
Спасибо.
Ответы
Ответ 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 км.