Flask從入門到精通之Flask-Moment本地化日期和時間

  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 時間戳
相關文章
相關標籤/搜索