Moment.js 是一個簡單易用的輕量級JavaScript日期處理類庫,提供了日期格式化、日期解析等功能。它支持在瀏覽器和NodeJS兩種環境中運行。此類庫可以 將給定的任意日期轉換成多種不一樣的格式,具備強大的日期計算功能,同時也內置了能顯示多樣的日期形式的函數。Flask-Moment是一個集成moment.js
到Jinja2模板的Flask擴展。安裝Flask-Moment的方式以下:html
pip install Flask-Moment
初始化Flask-Momentjquery
from flask.ext.moment import Moment moment = Moment(app)
除了moment.js,Flask-Moment 還依賴jquery.js。要在HTML 文檔的某個地方引入這兩個庫,能夠直接引入,這樣能夠選擇使用哪一個版本,也可以使用擴展提供的輔助函數,從內容分發網絡(Content Delivery Network,CDN)中引入經過測試的版本。Bootstrap 已經引入了jquery.js,所以只需引入moment.js 便可。下面展現瞭如何在基模板的scripts 塊中引入這個庫。
flask
{% block scripts %}
{{ super() }}
{{ moment.include_moment() }}
{% endblock %}
爲了處理時間戳,Flask-Moment 向模板開放了moment 類。下面例子中的代碼把變量current_time 傳入模板進行渲染。瀏覽器
from datetime import datetime @app.route('/') def index(): return render_template('index.html', current_time=datetime.utcnow())
下面的例子展現瞭如何在模板中渲染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' 分別對應不一樣的複雜度。format() 函數還可接受自定義的格式說明符。第二行中的fromNow() 渲染相對時間戳,並且會隨着時間的推移自動刷新顯示的時間。這
個時間戳最開始顯示爲「a few seconds ago」,但指定refresh 參數後,其內容會隨着時間的推移而更新。若是一直待在這個頁面,幾分鐘後,會看到顯示的文本變成「a minuteago」「2 minutes ago」等。app
Flask-Moment 實現了moment.js 中的format()、fromNow()、fromTime()、calendar()、valueOf()和unix() 方法。你可查閱文檔(http://momentjs.com/docs/#/displaying/)學習moment.js 提供的所有格式化選項。函數
Flask-Moment 渲染的時間戳可實現多種語言的本地化。語言可在模板中選擇,把語言代碼傳給lang() 函數便可{{ moment.lang('es') }}。下面是經常使用的格式話參數:學習
YYYY |
2014 |
年份 |
YY |
14 |
2個字符表示的年份 |
Q |
1..4 |
季度 |
M MM |
4..04 |
月份 |
MMM MMMM |
4月..四月 |
根據moment.locale()中的設置顯示月份 |
D DD |
1..31 |
一月中的第幾天 |
Do |
1日..31日 |
一月中的第幾天 |
DDD DDDD |
1..365 |
一年中的第幾天 |
X |
1410715640.579 |
時間戳 |
x |
1410715640579 |
時間戳 |