2012-03-08 105 views
13

Tengo una consulta como la siguiente:(Django) cómo obtener el nombre del mes?

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

y salidas:

3 

Quiero mostrar el nombre del mes como "Marcha". ¿Que debería hacer?

+0

Ninguna de las siguientes respuestas son buenos para mí, ya que no toman la configuración regional del pedido en consideración ... – lvella

Respuesta

31

utilice el método de formato de cadena de fecha y hora, p.

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

para obtener más información y una lista completa de los códigos de formato, consulte the python datetime docs

+0

gracias hombre :) gracias por –

0

Uso strftime:

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

El Calendar API es otra opción.

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

módulo de calendario de Python lo hará por usted, ver calendar.month_name

month = calendar.month_name[3] 
2

Month Name a Month Number y viceversa en python

mediante el uso de calendario calendar

Creación de una reverse dictionary sería una forma razonable de hacerlo:

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

10

Para Inglés solamente, se puede utilizar el método de la cadena de formato de fecha y hora de Python, por ejemplo,

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

También puede utilizar métodos de Django, que devolverá el nombre en el lenguaje corriente activada.

En una plantilla Django:

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

En una función de vista Django:

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

puede probar el más tarde en la cáscara Django (python manage.py shell) para, por ejemplo, Español con:

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

la respuesta más completa aquí :) – Florian

0

I resuelto el mismo mediante el registro de una etiqueta de plantilla personalizada que me ayude a aplicarlo en cualquier página de la plantilla que requiere el nombre del mes.

templatetags/etras.py

from django import template 
import calendar 

register = template.Library() 

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

Uso de plantilla:

{% load extras %} 
{{ month_figure|month_name }} 
Cuestiones relacionadas