Вопрос

Есть ли какой-нибудь веб-сервис (или любой другой способ) для получения текущих настроек часового пояса для города (США).Для тех частей страны, которые не переходят на летнее время и в основном переходят часовые пояса, когда все остальные переключают летнее/зимнее время...Мне не нравится создавать собственную базу данных мест, в которых не используется летнее время.Есть ли способ получить эти данные по требованию?

Мне это нужно для сервера базы данных (не для клиентских рабочих станций) - в базе данных хранятся объекты, имеющие свойства City, State.Мне нужно знать текущий часовой пояс для этих объектов в любой момент времени.

Это было полезно?

Решение

Earthtools.org предоставляет бесплатный веб-сервис для получения часового пояса города:

http://www.earthtools.org/webservices.htm#timezone

Вы просто передаете значения long/lat следующим образом:(Это для Нью-Йорка)

http://www.earthtools.org/timezone-1.1/40.71417/-74.00639


РЕДАКТИРОВАТЬ:

Кажется, Earthtools закрыли.Хорошей альтернативой (которой не существовало в 2008 году, когда был дан ответ на этот вопрос) является API часовых поясов Google.Чтобы использовать его, вам необходимо сначала активировать API часового пояса на вашем счету.Это бесплатно, если вы остаетесь ниже этих ограничений:

  • 2500 запросов в сутки.
  • 5 запросов в секунду.

Документация доступен на Google Developers.

Другие советы

Мы столкнулись с той же проблемой, и, помимо замечательных предложений, приведенных выше, у Google есть два взаимодополняющих API: один для часового пояса на основе данных геокодирования (широта/долгота) и API геокодирования.

Например, чтобы получить часовой пояс и смещение для Сан-Франциско:

1) Преобразуйте город в геокодированное местоположение:

http://maps.googleapis.com/maps/api/geocode/json?address=San%20Francisco,+CA&sensor=false

Геокодированное местоположение находится в возвращаемых данных JSON:

"location": {
    "lat":  37.77492950,
    "lng": -122.41941550
}

2) Преобразуйте геокодированное местоположение в местный часовой пояс и смещение, если таковое имеется:

https://maps.googleapis.com/maps/api/timezone/json?location=37.77492950,-122.41941550&timestamp=1331161200&sensor=false

Возвращает информацию о текущем часовом поясе:

{
          "status": "OK",
       "dstOffset":  0.0,
       "rawOffset": -28800.0,              
      "timeZoneId": "America/Los_Angeles",
    "timeZoneName": "Pacific Standard Time"
}

Часовые пояса региона могут меняться по разным причинам.Поэтому рекомендуется найти авторитетное серверное решение, а не кэшировать.Для получения дополнительной информации см. Статья о часовом поясе в Википедии.

Geonames.org имеет замечательный набор мировых данных, которые доступны через веб-сервис или скачиваются:

http://www.geonames.org/export/ws-overview.html

В частности

http://www.geonames.org/export/web-services.html#timezone

.

Информация о часовом поясе Earthtool устарела...например, текущее смещение Шри-Ланки составляет +5,5 от GMT, но EarthTools показывает +6, что было старым смещением до 2005 года.

Я предлагаю GeoNames.org.

WorldTimeServer.com имеет, по-видимому, обширную базу данных часовых поясов, к которой вы можете приобрести доступ в различных форматах, включая компонент .NET для использования в Интернете.

Никакой связи, просто недавно пришлось самому исследовать то же самое.

Простая автономная библиотека: APTimeZones

Чтобы найти часовой пояс для местоположения, вы можете использовать, например, API часового пояса Google Maps API.К сожалению, для этого вам необходимо запросить удаленную службу, и на вас распространяются их ограничения.

Вот библиотека от Alterplay под названием APTimeZones(Git прилагается), что позволяет извлекать NSTimeZone из заданного места без необходимости подключения к удаленному сервису. APTimeZones работает путем запроса локального списка часовых поясов (входит в состав библиотеки).

На случай, если кто-нибудь столкнется с этим вопросом.

  • Вы можете использовать Google API для поиска адреса.Это возвращает широту/долготу.Имея эти значения, вы можете найти ближайший часовой пояс, используя, например.PHP.

  • Или вы можете использовать API, например timezoneapi.io (я за это), который позволяет вам искать адрес/город/страну.Он возвращает адрес, информацию о часовом поясе и текущую дату/время для данного часового пояса.

https://timezoneapi.io/developers/адрес

Я нашел бесплатную загружаемую базу данных здесь: http://citytimezones.info/

редактировать] ...но более точную информацию (включая источники) на основе БД Олсона можно найти здесь: http://en.wikipedia.org/wiki/Tz_database

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

У Google есть собственный сервис, который очень надежен и прост в использовании и выводит информацию в формате JSON.Он даже позволяет указать собственное время, например, получить часовой пояс на 02.02.2013 на Мальте.

https://developers.google.com/maps/documentation/timezone/

Google, 2500 бесплатных запросов в деньhttps://developers.google.com/maps/documentation/timezone/

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top