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ć?
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ć?
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
dziękuję człowieka :) –
datetime.datetime.strftime(today, '%B') # Outputs 'March'
lub
datetime.datetime.strftime(today, '%b') # Outputs 'Mar'
http://docs.python.org/library/datetime.html#strftime-strptime-behavior
Zastosowanie strftime:
>>> today = datetime.datetime.now()
>>> today.strftime("%B")
'March'
>>>
Inną opcją jest Calendar API.
calendar.month_name[3] # would return 'March'
moduł kalendarza Pythona zrobi to za ciebie, zobacz calendar.month_name
month = calendar.month_name[3]
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))
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'
dziękuję najbardziej kompletna odpowiedź tutaj :) – Florian
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 }}
Żadne z poniższych odpowiedzi są dobre dla mnie, bo nie biorą locale życzenie za uwagę ... – lvella