Веб-сервис - текущий часовой пояс для города? - PullRequest
49 голосов
/ 11 сентября 2008

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

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

Ответы [ 10 ]

68 голосов
/ 20 февраля 2013

Мы столкнулись с той же проблемой, и, помимо замечательных предложений, приведенных выше, у 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"
}

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

42 голосов
/ 11 сентября 2008

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

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

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

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


EDIT:

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

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

Документация доступна для разработчиков Google.

15 голосов
/ 11 сентября 2008

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

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

В частности

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

.

7 голосов
/ 24 ноября 2011

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

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

5 голосов
/ 11 сентября 2008

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

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

1 голос
/ 05 января 2017

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

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

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

https://timezoneapi.io/developers/address

1 голос
/ 02 июня 2014

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

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

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

0 голосов
/ 09 сентября 2013

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

0 голосов
/ 26 апреля 2013

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

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

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

0 голосов
/ 12 декабря 2012

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...