Я знаю, что это было задано раньше, и я все еще держу свои волосы, пытаясь понять это. Я пробовал pytz, dateutil, а теперь flask_moment. Все еще возникают проблемы с преобразованием таблицы datetime MySQL, которая является UTC, для отображения в шаблоне jinja2 в качестве локального времени, в частности UTC - 05:00 (EST).UTC в местный часовой пояс в фляге/шаблон jinja
Мой jinja2 цикл выглядит следующим образом:
{% for data in items %}
...
<td>{{data.loggedInBy}}</td>
<td>{{data.timeIn.strftime('%I:%M %p')}}</td>
...
{% endfor %}
Я новичок в Python/колба/дзиндзя, так легко идти на меня, пожалуйста. Документация довольно запутанная для нуба, такого как я. Может кто-нибудь, пожалуйста, проведет меня через получение моей таблицы MySQL для отображения времени в локальном часовом поясе?
Я чувствую, что это близко, но с этим возникают ошибки. В INIT .py, я имел:
from pytz import timezone
def datetimefilter(value, format='%I:%M %p'):
tz = timezone('US/Eastern')
dt = value
local_dt = tz.localize(dt)
local_dt.replace(hour=local_dt.hour + int(local_dt.utcoffset().total_seconds()/3600))
return local_dt.strftime(format)
flask_app.jinja_env.filters['datetimefilter'] = datetimefilter
jinja template had:
{% for data in items %}
...
<td>{{data.loggedInBy}}</td>
<td>{{data.timeIn | datetimefilter }}</td>
...
{% endfor %}
Но это дает мне "ValueError: Час должен быть в 0..23" От линии:
local_dt.replace(hour=local_dt.hour + int(local_dt.utcoffset().total_seconds()/3600))
Заранее спасибо!
Спасибо Schechter, но кажется, что даже после вашего второго предложения, что я все еще получаю ValueError: astimezone() нельзя применить к наивному дате. Ближе, но все еще не совсем работаю для меня. –
Yeah Schechter, выглядит как строка, которая читает 'tz_aware_dt = utc.localize (value)' должна быть: 'tz_aware_dt = utc.localize (значение) .astimezone (pytz.utc)', чтобы на самом деле сделать это известно –
Спасибо, что указали, что out @RyanGreever. Я думаю, что я оставил «ценность», где должно было быть tz_aware_dt. Я отредактировал ответ, чтобы отразить изменения. – Schechter