Веб-сервис - текущий часовой пояс для города?
Существует ли какая-либо веб-служба (или каким-либо другим способом), чтобы вытащить текущие настройки часового пояса для (США) города. Для частей страны, которые не следуют за летним временем и в основном прыгают, когда все остальные переключают летнее/зимнее время... Я не хочу создавать собственную базу данных мест, которые не следуют 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×tamp=1331161200&sensor=false
Возвращает текущую информацию о часовом поясе:
{
"status": "OK",
"dstOffset": 0.0,
"rawOffset": -28800.0,
"timeZoneId": "America/Los_Angeles",
"timeZoneName": "Pacific Standard Time"
}
Часовые пояса для региона могут меняться по разным причинам. Поэтому неплохо найти авторитетное серверное решение, а не кеш. Для получения дополнительной информации см. статью в часовом поясе Википедии.
Ответ 3
Geonames.org имеет замечательный набор мирских данных, доступных через webservice или для загрузки:
http://www.geonames.org/export/ws-overview.html
В частности,
http://www.geonames.org/export/web-services.html#timezone
.
Ответ 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/
Ответ 10
Google, 2500 бесплатных запросов в день
https://developers.google.com/maps/documentation/timezone/