1. 程式人生 > >Flask從入門到精通之Flask-Moment本地化日期和時間

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

display second res width 依賴 post spl 分發 temp

  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本地化日期和時間