Подтвердить что ты не робот

Ruby gem для поиска временной зоны местоположения

У меня есть местоположение (город, штат), дата и время, и я хочу преобразовать его в utc, но вам нужно сначала найти часовой пояс местоположения. Я провел небольшое исследование, и все, кажется, указывает на земные инструменты или геонауки, но оба веб-сервиса, по-видимому, являются широтой и долготой. Есть ли служба или драгоценный камень или любой другой способ найти часовой пояс на основе этого формата местоположения? или как можно преобразовать местоположение в широту и долготу?

4b9b3361

Ответ 1

Вы можете легко получить широту и долготу, используя API геокодирования google maps. Для API есть рубиновые реализации, такие как GeoKit. После этого вы можете использовать драгоценный камень часового пояса, чтобы легко получить часовой пояс широты и долготы. Этот драгоценный камень позволяет легко делать преобразования времени в вашем часовом поясе.

Вот пример, используя GeoKit и 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

Ответ 2

Во второй части вопроса см. принятый ответ на этот вопрос:

Определите часовой пояс из широты/долготы без использования веб-сервисов, таких как Geonames.org

Как указано в этом ответе, вы должны:

  • Загрузите базу данных городов с сайта geonames.org
  • преобразуйте его в компактный список часовых поясов lat/lon →
  • используйте R-Tree для эффективного поиска ближайшего города (точнее, его часовой пояс) к заданной координате

Имейте в виду, что многие штаты США принадлежат к одному часовому поясу, что облегчает работу.

Ответ 3

Вы можете совершать собственные звонки в службу геолокации, например Google Maps, чтобы перевести город, штат на широту и долготу. Существуют также открытые семена базы данных, которые дадут вам широту и долготу для городов по всему миру. Вы можете сделать модель местоположения и засеять эту таблицу одним из них.

Вот одно место, где вы можете бесплатно загрузить данные геолокации: http://www.maxmind.com/app/geolitecity

Ответ 4

Проверьте этот драгоценный камень: https://github.com/sck-v/google_timezone

Он использует часовой пояс api для определения часового пояса по известной широте и долготе