2013-07-28 1 views
4

В моем проекте django у меня есть небольшая база данных отелей с полями city и country.Как получить часовой пояс, проехав город и страну?

Могу ли я получить timezone для этого места, передав city и country в качестве параметров в каком-либо виде.

Причина, по которой я хочу это сделать, состоит в том, что у меня есть некоторые команды, которые работают на основе разницы в check-in времени в гостиницах и времени на этом хоте прямо сейчас. Поскольку datetime.now() дает наивное datetime, я не могу использовать его для сравнения с временем в отеле.

Как с нетерпением ждать решения. Спасибо :)

+0

связанный: [Получить часовую зону из города в Python/Django] (http://stackoverflow.com/q/16505501/4279) – jfs

ответ

7

Чтобы решить часовой пояс по городу и стране, сначала вам необходимо получить координаты широты/долготы. См. Этот вопрос и его различные ответы: https://stackoverflow.com/q/23572/634824

Имейте в виду, что есть некоторые города в мире, которые имеют участки, которые соблюдают различные часовые пояса. В этих случаях у вас может быть небольшой предел погрешности. См. Это сообщение: can 2 timezone be for 1 city?

Поскольку вы сказали, что ищете места в определенных местах (отели), вам, вероятно, будет лучше геокодировать точные координаты каждого места, используя его полный адрес. Для этого есть много услуг, таких как the one provided by Google here.

Затем используйте координаты в одной из услуг, описанных здесь: How to get a time zone from a location using latitude and longitude coordinates?

После того, как у вас есть идентификатор зоны времени, такие как Asia/Seoul или America/New_York, то вы можете использовать его в pytz функций, так как пользователь falsetru показал в своем ответ.

может ускорить процесс, предварительно проверив заранее, если интересующий вас город уже является одним из тех, которые определены в базе данных часового пояса. Но в мире есть тысячи городов, а не только ключевые города с идентификаторами часовых поясов.

Другие идеи

  • Вы можете использовать GeoDjango со временем карты зоны данных found here.
  • Вы можете посмотреть Django-GeoNames и посмотреть, включены ли часовые пояса из GeoNames.
  • Там может быть какая-то другая специальная библиотека Django или Python, для которой я не нашел за 5 минут поиска Google.