Aprende a proporcionar un formato personalizado a un objeto de fecha y hora en Django.

¿Trabajando con fechas en Django? El módulo de fecha y hora de Python ofrece clases para manipular fechas y horas fácilmente. Puede formatear cualquier fecha de Python (siempre que sea un objeto de fecha y hora) utilizando el método strftime.

Formato de fecha

Un objeto de fecha y hora tendrá el método strftime que le permite proporcionar un formato personalizado a una fecha e imprimirlo como una cadena donde lo necesite. Puede especificar cómo y dónde se debe representar cada parte de la fecha con los siguientes identificadores:

Cadena de formato Descripción
%a Nombre abreviado del día de la semana.
%A Nombre completo del día de la semana.
%b Nombre del mes abreviado de la configuración regional.
%B Nombre completo del mes de la configuración regional.
%c Representación apropiada de la fecha y la hora.
%d Día del mes como número decimal [01,31].
%H Hora (reloj de 24 horas) como número decimal [00,23].
%I Hora (reloj de 12 horas) como número decimal [01,12].
%j Día del año como número decimal [001,366].
%m Mes como número decimal [01,12].
%M Minuto como número decimal [00,59].
%p Equivalente local de AM o PM.
%S Segundo como número decimal [00,61].
%U Número de semana del año (domingo como primer día de la semana) como número decimal [00,53]. Todos los días de un año nuevo que preceden al primer domingo se consideran de la semana 0.
%w Día de la semana como número decimal [0 (domingo), 6].
%W Número de semana del año (lunes como primer día de la semana) como número decimal [00,53]. Todos los días de un año nuevo que preceden al primer lunes se consideran de la semana 0.
%x Representación de fecha apropiada de la configuración regional.
%X Representación de tiempo apropiada de la configuración regional.
%y Año sin siglo como número decimal [00,99].
%Y Año con siglo como número decimal.
%Z Nombre de la zona horaria (sin caracteres si no existe una zona horaria).
%% Un '%'personaje literal .

En la vista

Dentro del controlador, tiene acceso directamente al objeto de fecha y hora. Eso significa que puede simplemente ejecutar la función strftime y pasar la cadena de formato como primer argumento:

# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.shortcuts import render

# Importar fecha y hora
from datetime import datetime

def index(request):
    # return HttpResponse("<h1>Hola Mundo!</h1>")
    # Algún objeto de fecha, por ejemplo, un valor predeterminado generado por fecha y hora
    myDate = datetime.now()
    
    # Dar formato a la fecha
    # Muestra algo como: Aug. 27, 2017, 2:57 p.m.
    formatedDate = myDate.strftime("%Y-%m-%d %H:%M:%S")

    # Haz algo con la fecha formateada
    return render(request, 'pages/index.html', {
        'date': formatedDate
    })

En la plantilla

Si está dispuesto a formatear la cadena en la plantilla y no en la vista (controlador), puede hacerlo con un filtro llamado fecha. La siguiente Vista (controlador) devuelve un objeto de fecha a una plantilla simple que imprimirá la fecha enviada desde la vista:

# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.shortcuts import render

# Importar clase Datetime
from datetime import datetime

def index(request):

    # Algún objeto de fecha, por ejemplo, un valor predeterminado generado por fecha y hora
    myDate = datetime.now()

    # Renderizar la misma plantilla con un parámetro accesible como fecha
    return render(request, 'pages/index.html', {
        'myDate': myDate
    })

El contenido de la siguiente plantilla (index.html) utilizará el siguiente código para formatear el objeto de fecha proporcionada:

Imprime algo como:  Aug. 27, 2017, 2:57 p.m.
{{ myDate|date:'Y-m-d H:i' }}

Que te diviertas ❤️!


Ingeniero de Software Senior en EPAM Anywhere. Interesado en la programación desde los 14 años, Carlos es un programador autodidacta, fundador y autor de la mayoría de los artículos de Our Code World.

Conviertete en un programador más sociable

Patrocinadores