Convertir un objeto date en string en Python

Cómo convertir un objeto date en string

Aquí te traigo un post de mucha ayuda que suelo utilizar frecuentemente en mis desarrollos. Sí, ya te he comentado en otras ocasiones que manipular fechas, horas y cadenas es una tarea muy común en todo proyecto. Lo que aprenderás en este post es algo muy concreto: cómo convertir un objeto datetime, date, o time en string.

Cómo convertir un objeto datetime, date o time a string

Para convertir una fecha a string tienes que hacer uso del método strftime() de las clases datetime, date o time. Este método devuelve la representación de la fecha/hora como una cadena con un formato específico. El formato de la cadena de salida se pasa como argumento al método y se define a partir de unos códigos de formato que te enseñaré más adelante. Antes, veamos unos ejemplos.

Ejemplo 1. Transformar un objeto datetime en string

En el ejemplo siguiente se crea un objeto de tipo datetime y a partir de él se obtienen distintas representaciones de tipo string con diferentes formatos. Recuerda importar el módulo datetime. La fecha de ejemplo es el 3 de enero de 2020 a las 8 horas.

import datetime

# Creamos un objeto datetime
una_fecha = datetime.datetime(2020, 1, 3, 8, 0)

# Convertimos el objeto datetime a string con formato <día>/<mes>/<año>
f1_str = una_fecha.strftime('%d/%m/%Y')
print(f1_str)

> 03/01/2020

# Convertimos el objeto datetime a string con formato <día>-<mes>-<año>
f2_str = una_fecha.strftime('%d-%m-%Y')
print(f2_str)

> 03-01-2020

# Convertimos el objeto datetime a string
# con formato <hora>:<minutos>:<segundos>
hora_str = una_fecha.strftime('%H:%M:%S')
print(hora_str)

> 08:00:00

# Convertimos el objeto datetime a string uniendo todo lo anterior
fecha_hora_str = una_fecha.strftime('%d/%m/%Y %H:%M')
print(fecha_hora_str)

> 03/01/2020 08:00

Ejemplo 2. Convertir un objeto date en string

Tomando como base el objeto una_fecha del ejemplo anterior, vamos a pasar su objeto date a string.

# Convertimos el objeto date a string con formato <día> de <mes> de <año>
solo_fecha = una_fecha.date()
solo_fecha_str = solo_fecha.strftime('%d de %m de %Y')
print(solo_fecha_str)

> 03 de 01 de 2020

Sé lo que estás pensando… ¿Qué ocurre si tratas de obtener la hora o minutos de un objeto date? Pues Python les asigna por defecto el valor 0.

solo_hora_str = solo_fecha.strftime('%H:%M')
print(solo_hora_str)
> 00:00

Ejemplo 3. Convertir un objeto time en string

De nuevo tomaremos como base el objeto una_fecha para convertir su objeto time a string.

# Convertimos el objeto time a string con formato <hora>:<minutos>:<segundos>
solo_hora = una_fecha.time()
solo_hora_str = solo_hora.strftime('%H:%M:%S')
print(solo_hora_str)

> 08:00:00

Si tratamos de obtener la fecha de un objeto time, veremos que Python le asigna por defecto el día 1 de enero de 1900.

solo_fecha_str = solo_hora.strftime('%d/%m/%Y')
print(solo_fecha_str)

> 01/01/1900

¡OJO! También te puede interesar Cómo convertir un string en fecha

Códigos de formato

A continuación se muestran los códigos de formato válidos para aquellas plataformas con una implementación estándar de C.

DirectivaSignificadoEjemplo
%aNombre abreviado del día de la semanaSun, Mon, …
%ANombre completo del día de la semanaSunday, Monday, …
%wDía de la semana como número decimal (domingo es 0)0, 1, …, 6
%dDía del mes como número decimal (añade cero delante)01, 02, …, 31
%-dDía del mes como número decimal1, 2, …, 30
%bNombre del mes abreviadoJan, Feb, …, Dec
%BNombre del mes completo.January, February, …
%mMes como número decimal (añade cero delante)01, 02, …, 12
%-mMes como número decimal1, 2, …, 12
%yAño sin siglo como número decimal (añade cero delante)00, 01, …, 99
%-yAño sin siglo como número decimal0, 1, …, 99
%YAño con siglo como número decimal2013, 2019 etc.
%HHora (24 horas) como número decimal (añade cero delante)00, 01, …, 23
%-HHora (24 horas) como número decimal0, 1, …, 23
%IHora (12 horas) como número decimal (añade cero delante)01, 02, …, 12
%-IHora (12 horas) como número decimal1, 2, … 12
%pAM o PM localesAM, PM
%MMinuto como número decimal (añade cero delante)00, 01, …, 59
%-MMinuto como número decimal0, 1, …, 59
%SSegundo como número decimal (añade cero delante)00, 01, …, 59
%-SSegundo como número decimal0, 1, …, 59
%fMicrosegundos como número decimal (añade ceros delante)000000 – 999999
%zCompensación UTC con formato +HHMM o -HHMM 
%ZNombre de la zona horaria 
%jDía del año como número decimal (añade cero delante)001, 002, …, 366
%-jDía del año como número decimal1, 2, …, 366
%UNúmero de semana del año (domingo como primer día de la semana). Los días de un nuevo año anteriores al primer domingo se consideran en la semana 0.00, 01, …, 53
%WNúmero de semana del año (lunes como primer día de la semana). Los días de un nuevo año anteriores al primer lunes se consideran en la semana 0.00, 01, …, 53
%cRepresentación apropiada de fecha y hora localMon Sep 30 07:06:05 2013
%xRepresentación apropiada de fecha local09/30/13
%XRepresentación apropiada de hora local07:06:05
%%El carácter ‘%’ literal%

¿Quieres ser expert@ en Python? Recibe trucos Python y las últimas novedades del blog

¡Eyyy! Esto también te puede interesar 👇

* Te informo de que los datos de carácter personal que proporciones al comentar serán tratados por Juan José Lozano Gómez como responsable de esta web. La Finalidad es moderar los comentarios. La Legitimación es gracias a tu consentimiento. Destinatarios: tus datos se encuentran alojados en Disqus (disqus.com), mi sistema de comentarios, que está acogido al acuerdo de seguridad EU-US Privacy. Podrás ejercer Tus Derechos de Acceso, Rectificación, Limitación o Suprimir tus datos enviando un email a juanjo@j2logo.com. Encontrarás más información en la POLÍTICA DE PRIVACIDAD.

Sobre j2logo

j2logo profile

Quiero ayudarte a que seas mejor programador/a, pero no uno cualquiera, sino uno de los top.

¿Quieres ser expert@ en Python? 🐍

❤️ He ayudado a miles de programadores/as como tú a ser mejores Pythonistas

📩 Recibe de vez en cuando trucos y scripts Python y las últimas novedades del blog

* Al enviar el formulario confirmas que aceptas la POLITICA DE PRIVACIDAD

¿Quieres ser expert@ en PYTHON?

j2logo-pythonistas

❤️ He ayudado a miles de programadores/as como tú

📩 Recibe trucos, scripts y las novedades del blog

¿Quieres dominar Python?

Python, Guía para ser un Pythonista

El curso con el que aprender el lenguaje desde cero. Con mi soporte y ayuda.

OFERTA BLACK FRIDAY

35% de descuento