【发布时间】:2016-04-20 14:58:48
【问题描述】:
我知道以前有人问过这个问题,但我仍在努力解决这个问题。我尝试了 pytz、dateutil,现在又尝试了 flask_moment。在将 MySQL 表日期时间(即 UTC)转换为在 jinja2 模板中显示为本地时间(特别是 UTC - 05:00 (EST))时仍然存在问题。
我的 jinja2 for 循环如下所示:
{% for data in items %}
...
<td>{{data.loggedInBy}}</td>
<td>{{data.timeIn.strftime('%I:%M %p')}}</td>
...
{% endfor %}
我是 python/flask/jinja 的新手,所以请放轻松。对于像我这样的菜鸟来说,文档非常令人困惑。有人可以指导我获取我的 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))
提前致谢!
【问题讨论】: