times rails metodo hora formato formatear fechas fecha actual ruby web-services timezone gem location

rails - Ruby gem para encontrar la zona horaria de la ubicación



metodo times ruby (5)

Consulta esta joya: https://github.com/sck-v/google_timezone

Utiliza google timezone api para determinar la zona horaria por latitud y longitud conocida

Tengo una ubicación (ciudad, estado), fecha y hora, y quiero convertirlo a utc, pero primero necesito encontrar la zona horaria de la ubicación. Hice un poco de investigación y todo parece apuntar a earthtools o geonames, pero ambos servicios web parecen ser de latitud y longitud solamente. ¿Hay algún servicio o gema o alguna otra forma de encontrar la zona horaria basada en este formato de ubicación? o ¿cómo se puede convertir la ubicación a latitud y longitud?



Para la segunda parte de la pregunta, vea la respuesta aceptada a esta pregunta:

Determine la zona horaria a partir de la latitud / longitud sin usar servicios web como Geonames.org

Como se establece en esa respuesta, usted debe:

  • Descargue la base de datos de ciudades de geonames.org
  • convertirlo en una lista compacta lat / lon -> timezone
  • utilice una implementación de R-Tree para buscar eficientemente la ciudad más cercana (o más bien, su zona horaria) a una coordenada dada

Tenga en cuenta también que muchos estados de EE. UU. Pertenecen a una zona horaria única, lo que debería facilitar el trabajo.


Puede hacer sus propias llamadas a un servicio de geolocalización, como Google Maps para traducir Ciudad, Estado en latitud y longitud. También hay bases de datos abiertas que le darán latitud y longitud para las ciudades de todo el mundo. Podrías hacer un modelo de ubicación y sembrar esa tabla con uno de esos.

Aquí hay un lugar donde puedes descargar datos de geolocalización de forma gratuita: http://www.maxmind.com/app/geolitecity


Puedes obtener fácilmente latitud y longitud con la API de geocodificación de google maps . Hay implementaciones de ruby ​​para la API como GeoKit . Una vez que tenga eso, puede usar la gema de la zona horaria para obtener fácilmente la zona horaria de una latitud y longitud. La gema también facilita las conversiones de tiempo en tu zona horaria.

Aquí hay un ejemplo usando GeoKit y GeoKit .

require ''geokit'' require ''timezone'' res = Geokit::Geocoders::GoogleGeocoder.geocode(''140 Market St, San Francisco, CA'') timezone = Timezone::Zone.new(:latlon => res.ll) timezone.zone => "America/Los_Angeles" timezone.time Time.now => 2011-12-01 14:02:13 UTC