我知道这已经被问过了,但我仍在努力寻找解决方案。我已经尝试过pytz,dateutil和现在flask_moment。在将MySQL表日期时间(UTC)转换为本地时间(特别是UTC-05:00(EST))在jinja2模板中显示时,仍然存在问题。
我的jinja2 for循环如下所示:
{% for data in items %}
...
<td>{{data.loggedInBy}}</td>
<td>{{data.timeIn.strftime('%I:%M %p')}}</td>
...
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
我是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 %}
Run Code Online (Sandbox Code Playgroud)
但这给了我“ ValueError:小时必须在0..23中”从第1行:
local_dt.replace(hour=local_dt.hour + int(local_dt.utcoffset().total_seconds() / 3600))
Run Code Online (Sandbox Code Playgroud)
提前致谢!