Я создаю сайт с флягой и хочу показать живые часы со временем в разных городах. У меня есть долгота и широта, хранящиеся в моей базе данных для каждого города. Использование плагина geonames Я могу получить timezoneid по координатам.Часы реального времени на сайте по координатам
Пример:
import geonames
geonames_client = geonames.GeonamesClient('demo')
geonames_result = geonames_client.find_timezone({'lat': 48.871236, 'lng': 2.77928})
print geonames_result['timezoneId']
Выход:
'Европа/Париж'
Как я могу отобразить живой часы на моей странице?
Пример:
Текущее время в городе: 12:59
UPD: Разобрался как показать живое время зная, часовой пояс с яваскриптом благодаря: @ Matt
<script type='text/javascript'>
function update() {
$('#clock').html(moment().tz("{{timezone}}").format('H:mm:ss'));
}
setInterval(update, 1000);
</script>
Теперь у меня другая проблема - я не могу получить идентификатор часового пояса по координатам. Линия «geonames.GeonamesClient (« имя пользователя »)« по какой-то причине не работает. Я прочитал результат ['Lat'] и результат ['Lng'] из моей базы данных.
import geonames
try:
location = {}
location['lat'] = result['Lat']
location['lng'] = result['Lng']
geonames_client = geonames.GeonamesClient('username')
print "test"
geonames_result = geonames_client.find_timezone(location)
print geonames_result['timezoneId']
result['Timezone'] = geonames_result['timezoneId']
except:
result['Timezone'] = 'America/Los_Angeles'
Итак, я постоянно получаю за исключением значения.
Я использую Колба + virtualenv + uwsgi + Nginx
UPD2: мне удалось это сделать. Я читаю из базы данных mysql lat и lng часового пояса города и города, если часовой пояс не указан - я делаю запрос на geonames.org и получаю идентификатор часового пояса длинным и латским и записываю его в свою базу данных, поэтому я не В следующий раз нужно запросить. Затем я отправляю идентификатор часового пояса в шаблон Jinja2. И использование moment.js и момента-времени отображает текущее время в городе. Вы можете увидеть обновленную страницу (очистить кэш первого): [ссылка] test.fantazia-svit.com.ua/city/9
Для того, чтобы получить часовой пояс из GeoNames Я использую эту функцию:
import urllib
import json
try:
url = "http://api.geonames.org/timezoneJSON?lat=%s&lng=%s&username=%s" % (Lat, Lng, username)
response = urllib.urlopen(url);
data = json.loads(response.read())
Timezone = data['timezoneId']
except:
Timezone = ''
Где Lat = широта, LNG = долгота и имя пользователя = ваше имя пользователь в genomes.org
Можете ли вы предоставить больше контекста? У вас есть существующая страница? Вы используете jinja2? Как вы показываете свой список городов? –
@ TimothéeJeannin Да, я использую Flask с Jinja 2, используйте mysql для хранения данных, например, ссылку на страницу: http://test.fantazia-svit.com.ua/city/9 Я хочу отображать время в каждом городе самостоятельно –
Вы хотите сделать это на клиентском JavaScript или на стороне сервера Python? Для JS ознакомьтесь с плагином [момент-время] (http://momentjs.com/timezone/) для [moment.js] (http://momentjs.com). –