(Джанго) как получить название месяца? - PullRequest
17 голосов
/ 08 марта 2012

У меня есть запрос, как показано ниже:

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

и выводит:

3

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

Ответы [ 8 ]

35 голосов
/ 08 марта 2012

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

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

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

15 голосов
/ 24 августа 2016

Только для английского языка вы можете использовать метод форматирования строки даты и времени 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'
8 голосов
/ 08 марта 2012

Календарь API - это еще один вариант.

calendar.month_name[3] # would return 'March'
2 голосов
/ 25 января 2016

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

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

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

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

1 голос
/ 08 марта 2012

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

month = calendar.month_name[3]
1 голос
/ 08 марта 2012
datetime.datetime.strftime(today, '%B') # Outputs 'March'

или

datetime.datetime.strftime(today, '%b') # Outputs 'Mar'

http://docs.python.org/library/datetime.html#strftime-strptime-behavior

0 голосов
/ 05 января 2018

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

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 }}
0 голосов
/ 08 марта 2012

Использовать strftime:

>>> today = datetime.datetime.now()
>>> today.strftime("%B")
'March'
>>> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...