flask使用moment.js格式化时间(flask学习)

  • baagee 发布于 2017-02-22 21:49:21
  • 分类:Python
  • 3750 人围观
  • 1 人喜欢

服务器需要统一时间单位,这和用户所在的地理位置无关,所以一般使用协调世界时 (Coordinated Universal Time,UTC)。不过用户看到 UTC 格式的时间会感到困惑,他们更希望看到当地时间,而且采用当地惯用的格式。

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

有一个使用 JavaScript 开发的优秀客户端开源代码库,名为 moment.js(http://momentjs. com/),它可以在浏览器中渲染日期和时间。Flask-Moment 是一个 Flask 程序扩展,能把 moment.js 集成到 Jinja2 模板中。Flask-Moment 可以使用 pip 安装:

pip install flask-moment

初始化 Flask-Moment

from flask_moment import Moment
moment = Moment(app)

然后通过视图函数向模板传递时间

@app.route('/')
def index():
    return render_template('index.html',title='首页',time=datetime.utcnow())

注意:momentjs需要jquery支持,必须提前引入jquer y

然后再模板中通过以下代码引入momentjs

{{ moment.include_moment() }}

然后就可以格式化时间了:

<p>{{ moment(time).fromNow(refresh=True) }}</p>
<p>{{ moment(time).format("LLL") }}</p>
<p>{{ moment(time).format("YYYY-MM-DD HH:mm:ss") }}</p>
{{ time }}

format('LLL') 根据客户端电脑中的时区和区域设置渲染日期和时间。参数决定了渲染的方 式,'L' 到 'LLLL' 分别对应不同的复杂度。format() 函数还可接受自定义的格式说明符。

第二行中的 fromNow() 渲染相对时间戳,而且会随着时间的推移自动刷新显示的时间。这 个时间戳最开始显示为“a few seconds ago”,但指定 refresh 参数后,其内容会随着时 间的推移而更新。如果一直待在这个页面,几分钟后,会看到显示的文本变成“a minute ago”“2 minutes ago”等。

以上时间格式化代码结果是:

11 minutes ago

February 18, 2017 10:50 PM

2017-02-18 22:50:11

2017-02-18 14:50:11.700899

更多的时间格式化函数查看moment.js文档点击查看


标签: falsk python

评论

点击图片切换
还没有评论,快来抢沙发吧!