2012-03-08 3 views
13

У меня есть запрос, как показано ниже:(Django) как получить название месяца?

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

и выводит:

3 

Я хочу, чтобы отобразить название месяца, как "март". Что мне делать?

+0

Ни один из следующих ответов хороши для меня, потому что они не принимают локаль запрос в во внимание ... – lvella

ответ

31

использовать способ форматирования строки datetime, например.

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

для получения дополнительной информации, а также полный список кодов форматирования см the python datetime docs

+0

спасибо человеку :) –

0

Использование STRFTIME:

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

календарь модуль Python будет делать это для вас, смотрите calendar.month_name

month = calendar.month_name[3] 
2

Month Name в Month Number и наоборот в python

с использованием календаря calendar

Создание reverse dictionary будет разумный способ сделать это:

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

10

только на английском языке, вы можете использовать метод DateTime строки форматирования Python, например,

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

Вы можете также использовать методы Django, который будет возвращать имя в текущем активированном языке.

В шаблоне Django:

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

В функции Джанго Вид:

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

0

Я решил то же самое, зарегистрировавшись пользовательским тегом шаблона, чтобы помочь мне применить его на любой странице шаблона, который требует названия месяца.

templatetags/etras.ру

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 }} 
Смежные вопросы