(Django)如何获得月份名称?

时间:2012-03-08 16:44:13

标签: python django datetime

我有如下查询:

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

并输出:

3

我想显示月份名称,例如“March”。我该怎么办?

8 个答案:

答案 0 :(得分:33)

使用日期时间字符串格式化方法,例如

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

有关详细信息以及格式代码的完整列表,请参阅the python datetime docs

答案 1 :(得分:14)

仅限英语,您可以使用Python的日期时间字符串格式化方法,例如

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

你也可以使用Django方法,它会在当前激活的语言中返回名称

在Django模板中,您还可以使用:

{{ a_date|date:'F' }}

在Django视图函数中:

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

您可以在Django shell(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'

答案 2 :(得分:8)

Calendar API是另一种选择。

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

答案 3 :(得分:2)

{p> Month NameMonth Number,反之亦然python

使用日历calendar

创建reverse dictionary将是一种合理的方法:

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

答案 4 :(得分:1)

datetime.datetime.strftime(today, '%B') # Outputs 'March'

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

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

答案 5 :(得分:1)

Python的日历模块将为您完成此操作,请参阅calendar.month_name

month = calendar.month_name[3]

答案 6 :(得分:0)

使用strftime:

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

答案 7 :(得分: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 }}