Flask学习笔记 12 - 日期和时间
Flask教程:http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-xiii-dates-and-times
这章讲解格式化时间。
思路: 服务器中存储的日期时间都是UTC的,对于不同的用户,使用javascript格式UTC时间显示给客户。
这里比较有意思的是:
- 使用了momentjs这个API。
- 使用python包了下momentjs函数,给模版引擎Jinja2调用。
使用momentjs
- 从momentjs下载moment.min.js,放到app/static/js/文件夹中。
-
在app/templates/base.html引用
<script src="/static/js/moment.min.js"></script>
用pyhton包momentjs
新建文件:app/momentjs.py
from jinja2 import Markup
class momentjs(object):
def __init__(self, timestamp):
self.timestamp = timestamp
def render(self, format):
return Markup("<script>\ndocument.write(moment(\"%s\").%s);\n</script>" % (self.timestamp.strftime("%Y-%m-%dT%H:%M:%S Z"), format))
def format(self, fmt):
return self.render("format(\"%s\")" % fmt)
def calendar(self):
return self.render("calendar()")
def fromNow(self):
return self.render("fromNow()")
把把的函数设置给模版引擎Jinja2
app/__init__.py
from .momentjs import momentjs
app.jinja_env.globals['momentjs'] = momentjs
在显示日期时间的地方使用上面的函数
app/templates/user.html
{% if user.last_seen %}
<p><em>Last seen: {{ momentjs(user.last_seen).calendar() }}</em></p>
{% endif %}
app/templates/post.html
<p><a href="{{ url_for('user', nickname=post.author.nickname)}}">{{ post.author.nickname }}</a> said {{ momentjs(post.timestamp).fromNow() }}:</p>
<p><strong>{{ post.body }}</strong></p>