我知道这个问题以前已经被提出过,但我仍然在努力尝试解决这个问题。我尝试了pytz、dateutil和flask_moment,但仍然无法将UTC格式的MySQL表格中的日期时间转换为本地时间(具体为UTC-05:00(东部标准时间))并在jinja2模板中显示。
我的jinja2循环代码如下:
{% 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: hour must be in 0..23”的错误。 出错代码行为:
local_dt.replace(hour=local_dt.hour + int(local_dt.utcoffset().total_seconds() / 3600))
提前感谢您!