如果Web应用的用户来自世界各地,那么处理日期和时间可不是一个简单的任务。服务器需要统一时间单位,这和用户所在的地理位置无关,所以一般使用协调世界时(UTC)。不过用户看到 UTC 格式的时间会感到困惑,他们更希望看到当地时间,而且采用当地惯用的格式。
要想在服务器上只使用UTC时间,一个优雅的解决方案是,把时间单位发送给Web浏览器,转换成当地时间,然后用JavaScript渲染。Web浏览器可以更好地完成这一任务,因为它能获取用户计算机中的时区和区域设置。
初始化Flask-Moment:
from flask_moment import Moment
moment = Moment(app)
引入 Moment.js 库:
{% block scripts %}
{{ super() }}
{{ moment.include_moment() }}
{% endblock %}
添加一个datetime变量:
from datetime import datetime
@app.route('/')
def index(): return render_template('index.html', current_time=datetime.utcnow())
使用 Flask-Moment 渲染时间戳:
<p>The local date and time is {{ moment(current_time).format('LLL') }}.</p>
<p>That was {{ moment(current_time).fromNow(refresh=True) }}</p>
最终效果: