Flask從入門到精通之Flask-Moment本地化日期和時間
Moment.js 是一個簡單易用的輕量級JavaScript日期處理類庫,提供了日期格式化、日期解析等功能。它支持在瀏覽器和NodeJS兩種環境中運行。此類庫能夠 將給定的任意日期轉換成多種不同的格式,具有強大的日期計算功能,同時也內置了能顯示多樣的日期形式的函數。Flask-Moment是一個集成moment.js
到Jinja2模板的Flask擴展。安裝Flask-Moment的方式如下:
pip install Flask-Moment
初始化Flask-Moment
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 塊中引入這個庫。
{% 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”等。
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 |
時間戳 |
Flask從入門到精通之Flask-Moment本地化日期和時間