Servicio web: ¿zona horaria actual de una ciudad?

¿Existe algún tipo de servicio web (o de cualquier otro tipo) para obtener una configuración de zona horaria actual para una ciudad (EE. UU.). Para las partes del país que no siguen el horario de verano y básicamente saltan las zonas horarias cuando todos los demás cambian el horario de verano / invierno … No me gusta crear una base de datos propia de los lugares que no siguen el horario de verano. ¿Hay alguna manera de obtener estos datos a pedido?

Lo necesito para el servidor de la base de datos (no para las estaciones de trabajo del cliente): hay entidades almacenadas en la base de datos que tienen Ciudad, Estado como propiedades. Necesito conocer la zona horaria actual para estas entidades en cualquier momento.

earthtools.org proporciona un servicio web gratuito para obtener la zona horaria de una ciudad aquí:

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

Usted acaba de pasar los valores long / lat como este: (Esto es para Nueva York)

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


EDITAR:

Parece que las herramientas de tierra se han cerrado. Una buena alternativa (que no existía en 2008 cuando se respondió esta pregunta) es la API de la zona horaria de Google. Para usarlo primero debes activar la API de zona horaria en tu cuenta. Es gratis si te mantienes por debajo de estos límites:

  • 2500 solicitudes por período de 24 horas.
  • 5 solicitudes por segundo.

La documentación está disponible en Google Developers.

Nos encontramos con el mismo problema y, junto con las grandes sugerencias anteriores, Google parece tener dos API complementarias, una para la zona horaria a partir de datos de geoencoding (latitud / longitud) y la API de geoencoding.

Por ejemplo, para obtener la zona horaria y el desplazamiento para San Francisco:

1) Convierta la ciudad a una ubicación geocodificada:

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

La ubicación geocodificada está en los datos de retorno JSON:

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

2) Convierta la ubicación geocodificada en una zona horaria local y un desplazamiento, si corresponde:

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

Que devuelve la información de la zona horaria actual:

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

Las zonas horarias para una región pueden cambiar por una variedad de razones. Por lo tanto, es una buena idea encontrar una solución autoritativa basada en el servidor y no una caché. Para obtener más información, consulte el artículo de la Zona horaria de Wikipedia .

Geonames.org tiene un maravilloso conjunto de datos mundanos que están disponibles a través del servicio web o la descarga:

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

En particular

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

.

La información de la zona horaria de Earthtool no está actualizada … para una instancia, el desplazamiento actual de Sri Lanka es +5.5 desde GMT pero EarthTools muestra como +6 que era el desplazamiento anterior antes de 2005.

Sugiero GeoNames.org .

WorldTimeServer.com tiene lo que parece ser una base de datos de zona horaria completa, a la que puede acceder en una variedad de formatos, incluido un componente .NET para uso web.

Sin conexión, solo tuve que investigar lo mismo recientemente.

Biblioteca simple sin conexión: APTimeZones

Para encontrar la zona horaria de una ubicación, puede usarla como API de la zona horaria de la API de Google Maps. Lamentablemente, esto requiere que consulte un servicio remoto y está sujeto a sus límites.

Aquí hay una biblioteca rom Alterplay llamada APTimeZones (se adjunta Git) que le permite extraer un NSTimeZone de una ubicación determinada sin la necesidad de conectarse a un servicio remoto. APTimeZones funciona al consultar una lista local de zonas horarias (incluida con la biblioteca).

En caso de que alguien se tope con esta pregunta.

  • Puede usar Google API para buscar una dirección. Eso devuelve latitude / logitude. Con esos valores en la mano, puede encontrar la zona horaria más cercana utilizando, por ejemplo, PHP.

  • O puede usar una API como timezoneapi.io (estoy detrás de eso) que le permite buscar una dirección / ciudad / país. Devuelve la dirección, la información de la zona horaria y la fecha / hora actual para esa zona horaria determinada.

https://timezoneapi.io/developers/address

Encontré una base de datos descargable gratuita aquí: http://citytimezones.info/

[edit] … pero puede encontrar información más precisa (incluidas las fonts) basadas en el DB de Olson aquí: http://en.wikipedia.org/wiki/Tz_database

Sé que esto se responde, pero estoy publicando esta respuesta, ya que las personas aún pueden encontrarla útil: la respuesta seleccionada no funciona con éxito en este momento.

Google tiene su propio servicio, que es muy confiable y fácil de usar, y genera información en formato JSON. Incluso permite especificar un horario personalizado, por ejemplo, obtener la zona horaria en 02/02/2013 en Malta.

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

Google, 2500 solicitudes gratuitas por día https://developers.google.com/maps/documentation/timezone/