2012-03-08 88 views
13

我有一個查詢象下面這樣:(Django)如何獲取月份名稱?

today = datetime.datetime.now() 
month = today.month 
print month 

它輸出:

3 

我想要顯示的月份名稱,如 「三月」。我該怎麼辦?

+0

都不是爲我好,因爲他們沒有采取請求的語言環境考慮... – lvella 2014-03-09 00:11:24

回答

31

使用日期時間字符串格式化方法,例如,

>>> today.strftime('%B') 
'March' 

更多的信息,並且格式代碼的完整列表,請參閱the python datetime docs

+0

謝謝:)人 – 2012-03-08 17:01:46

0

使用的strftime:

>>> today = datetime.datetime.now() 
>>> today.strftime("%B") 
'March' 
>>> 
8

Calendar API是另一種選擇。

calendar.month_name[3] # would return 'March' 
1

Python的日曆模塊會爲你做的,看到calendar.month_name

month = calendar.month_name[3] 
2

Month NameMonth Number,反之亦然在python

使用日曆calendar

創建reverse dictionary會一個合理的方式來做到這一點:

dict((val,k) for k,v in enumerate(calendar.month_abbr))

10

只有英語版,您可以使用Python,例如的日期時間字符串格式化方法

>>> today.strftime('%B') 
'March' 

您也可以使用Django的方法,這將在當前激活的語言返回名稱

在Django模板:

{{ a_date|date('F') }} 

在Django視圖函數:

from django.template.defaultfilters import date 
date(a_date, 'F') 

可以測試在Django的殼(python manage.py shell),用於例如在以後西班牙文:

In [1]: from django.utils.translation import get_language, activate 

In [2]: activate('es') 

In [3]: get_language() 
Out[3]: 'es' 

In [4]: import datetime 

In [5]: today = datetime.date.today() 

In [6]: from django.template.defaultfilters import date 

In [7]: date(today, 'F') 
Out[7]: u'Septiembre' 
+0

謝謝你這裏最完整的答案:) – Florian 2017-06-08 11:08:18

0

我解決了同一註冊一個自定義模板標籤來幫我申請它需要月份名稱的任何模板頁面上。

templatetags/etras。PY

from django import template 
import calendar 

register = template.Library() 

@register.filter 
def month_name(value): 
    return calendar.month_name[value] 

使用模板:

以下答案
{% load extras %} 
{{ month_figure|month_name }}