2012-03-08 9 views
13

Mam zapytanie jak poniżej:(Django) jak zdobyć nazwę miesiąca?

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

i wyprowadza:

3 

chcę wyświetlić nazwę miesiąca jak "marca". Co powinienem zrobić?

+0

Żadne z poniższych odpowiedzi są dobre dla mnie, bo nie biorą locale życzenie za uwagę ... – lvella

Odpowiedz

31

użyć metody formatowania ciągów datetime, np.

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

aby uzyskać więcej informacji i pełną listę kodów formatowania, zobacz the python datetime docs

+0

dziękuję człowieka :) –

0

Zastosowanie strftime:

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

Inną opcją jest Calendar API.

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

Month Name do Month Number i vice versa w python

Przez korzystania z kalendarza calendar

Tworzenie reverse dictionary byłoby rozsądny sposób na zrobienie tego:

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

10

tylko w języku angielskim, można użyć metody formatowania ciąg datetime Pythona, np

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

Można również użyć metody Django która zwróci nazwę w bieżącym aktywnym języku.

w matrycy Django:

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

W funkcji widoku Django:

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

można przetestować w dalszej powłoki Django (python manage.py shell) na przykład Hiszpański z:

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

dziękuję najbardziej kompletna odpowiedź tutaj :) – Florian

0

Rozwiązałem ten sam rejestrując niestandardowy tag szablonu, aby pomóc mi go zastosować na dowolnej stronie szablonu, który wymaga nazwę miesiąca.

templatetags/etras.py

from django import template 
import calendar 

register = template.Library() 

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

Wykorzystanie w szablonie:

{% load extras %} 
{{ month_figure|month_name }} 
Powiązane problemy