Quickly find the name of a time zone for a latitude and longitude without relying on a web service.
NearestTimeZone.to(41.85, -87.65) => "America/Chicago"
On a whatever MacBook Air, the time to lookup a single time zone is ~0.000030 seconds. Fast.
GeoNames Source Data
The city data is based on the GeoNames cities1000.zip data. To compress the size of the gem, the latitudes and longitudes were rounded to one decimal point of precision.
The Kdtree gem is used to make the search so fast.
The kdtree and the cities are loaded into memory when the gem is loaded. If you'd like to make that faster, run
rake nearest_time_zone:dump and the load time should drop significantly. The cities, time zones and kdtree will all be persisted to the file system when run that rake task.
Add this line to your application's Gemfile:
And then execute:
Or install it yourself as:
$ gem install nearest_time_zone
- Fork it
- Create your feature branch (
git checkout -b my-new-feature)
- Commit your changes (
git commit -am 'Add some feature')
- Push to the branch (
git push origin my-new-feature)
- Create new Pull Request