Python Flask Web 第七课 —— 使用 flask-moment 本地化日期和时间

服务器需要统一时间单位,这与用户所在的地理位置(时区)无关,所以一般使用协调世界时(UTC,Coordinated Universal Time)

对用户而言,会对 UTC 格式的时间感到困惑,更希望看到本地时间,而且采用当地所惯用的格式。

要想在服务器上只使用 UTC 时间,一个优雅的解决方案是,把时间单位发送给 web 浏览器,转换称当地时间,然后渲染。web 浏览器可以很好地完成这一任务,因为它能获取用户电脑中的时区和区域设置。

moment.js 一个使用 JavaScript 开发的优秀客户端开源代码库,可在浏览器中渲染日期和时间。flask-moment 是一个 flask 程序扩展,能把 moment.js 集成到 Jinja2 模板中。首先,进行 flask-moment 的安装:

pip install flask-moment

1. flask-moment 的初始化方法为:

from flask_moment import Moment
moment = Moment(app)

2. 基模板的修改

除了 moment.js,flask-moment 还依赖 jquery.js 。要在 html 文档的某个地方引入这两个库,可以直接引入,这样可以选择使用哪个版本,也可使用扩展提供的辅助函数,从内容分发网络(CDN,Content Delivery Network)中引入通过测试的版本。Bootstrap 已经引入了 jquery.js,因此只需引入 moment.js 即可,

如下代码展示了如何在基模板的 scripts 块中引入这个库:

{% block script %}
{{ super() }}
{{ moment.include_moment() }}
{% endblock %}

3. 时间戳的处理

为了处理时间戳,flask-moment 向模板开放了 moment 类,

from datetime import datetime

@app.route('/')
def index():
    return render_template('index.html', current_time=datetime.utcnow())

4. 在模板中渲染 current_time

<p>The local date and time is {{ moment(current_time).format('LLL') }}</p>
<p>That was {{ moment(current_time).fromNow(refresh=True) }}</p>

format(‘LLL’):根据客户端电脑中的时区和区域设置渲染日期和时间,参数决定了渲染的方式,’L’ 到 ‘LLLL’ 分别对应不同的复杂度。

5. 其他

flask-moment 实现了 moment.js 中的 format()、fromNow()、fromTime()、calendar()、valueOf()、unix()方法。具体可查阅文档 http://momentjs.com/docs/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五道口纳什

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值