Ruby gem for finding timezone of location [closed]

You can easily get a latitude and longitude using the google maps geocoding API. There are ruby implementations for the API like GeoKit. Once you have that you can use the timezone gem to easily get the timezone of a latitude and longitude. The gem makes it easy to do time conversions in your timezone as well.

Here is an example using GeoKit and TimeZone.

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

For the second part of the question, see the accepted answer to this question:

Determine timezone from latitude/longitude without using web services like Geonames.org

As stated in that answer, you should:

  • Download the database of cities from geonames.org
  • convert it to a compact lat/lon -> timezone list
  • use an R-Tree implementation to efficiently lookup the nearest city (or rather, its
    timezone) to a given coordinate

Keep in mind also that many U.S. states belong to a single time zone, which should make the job easier.

Leave a Comment