Веб-сервис - текущий часовой пояс для города?

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

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

Ответ 1

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

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

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

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


EDIT:

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

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

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

Ответ 2

Мы столкнулись с одной и той же проблемой, и, наряду с замечательными предложениями выше, у Google есть два дополнительных API: один для Time Zone из геокода (широта/долгота) и 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"
}

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

Ответ 4

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

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

Ответ 5

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

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

Ответ 6

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

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

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

Ответ 7

В случае, если кто-то столкнется с этим вопросом.

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

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

https://timezoneapi.io/developers/address

Ответ 8

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

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

Ответ 9

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

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

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