¿Cómo puedo cambiar el formato de plantilla de fecha predeterminado de Django?

100

Tengo fechas en formato ISO 8601 en la base de datos %Y-%m-%d. Sin embargo, cuando se pasa la fecha a la plantilla, aparece como algo así como Oct. 16, 2011.

¿Hay alguna forma de que pueda manipular el formato a lo que quiera?

intento-
fuente

Respuestas:

56

date etiqueta de plantilla

settings.DATE_FORMAT

Ignacio Vázquez-Abrams
fuente
No estoy seguro de cómo cambiaría eso en el archivo de configuración
bash
3
De la misma manera que cambias todos los demás ajustes.
Ignacio Vazquez-Abrams
22
El enlace a los documentos no es realmente una respuesta, así que votó en contra de esto y votó a favor la respuesta de medmunds.
Eric
274

Dentro de su plantilla, puede usar el datefiltro de Django . P.ej:

<p>Birthday: {{ birthday|date:"M d, Y" }}</p>

Da:

Cumpleaños: 29 de enero de 1983

Más ejemplos de formato en los documentos de filtro de fecha .

medmunds
fuente
Creo que esto solo funciona si la fecha se proporciona como un objeto de fecha y hora. ¿Qué pasa si es solo una cadena pasada desde la vista?
Mohammed Shareef C
2
Para una cadena arbitraria que contiene una fecha / hora, probablemente la analizaría en una fecha y hora de Python en el código de vista. (O incluso antes si es posible, donde sea que la cadena de fecha llegue por primera vez a mi código). Pero si realmente desea usar cadenas para pasar fechas y horas a sus plantillas de Django, esta respuesta parece útil.
medmunds
Perfecto ejemplo anterior para usar en el archivo de plantilla.
Vinod Patidar
30

Establecer ambos DATE_FORMATyUSE_L10N

Para realizar cambios para todo el sitio en Django 1.4.1, agregue:

DATE_FORMAT = "Y-m-d"

a su settings.pyarchivo y edite:

USE_L10N = False

ya que l10n anula DATE_FORMAT

Esto está documentado en: https://docs.djangoproject.com/en/dev/ref/settings/#date-format

Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
fuente
20

Solo usa esto:

{{you_date_field|date:'Y-m-d'}}

Esto mostrará algo como 2016-10-16 . Puede utilizar el formato que desee.

hardcoderrsl
fuente
8

Para cambiar el formato de fecha en views.py y luego asignarlo a la plantilla.

# get the object details 
home = Home.objects.get(home_id=homeid)

# get the start date
_startDate = home.home_startdate.strftime('%m/%d/%Y')

# assign it to template 
return render_to_response('showme.html' 
                                        {'home_startdate':_startDate},   
                                         context_instance=RequestContext(request) )  
kta
fuente
6

Si necesita mostrar una fecha y hora cortas (08/11/2018 03:23 am) puede hacerlo así:

{{your_date_field|date:"SHORT_DATE_FORMAT"}} {{your_date_field|time:"h:i a"}}

Detalles de esta etiqueta aquí y más sobre fechas según el formato dado aquí

Ejemplo:

<small class="text-muted">Last updated: {{your_date_field|date:"SHORT_DATE_FORMAT"}} {{your_date_field|time:"h:i a"}}</small>
nilsoviani
fuente