Dominar strftime() en Python: Convertir Fechas y Horas a Cadenas Legibles
Método strftime() en Python
En este artículo aprenderás a convertir objetos date, time y datetime en sus representaciones de cadena equivalentes, con ejemplos prácticos.
Video: Fechas y Horas en Python
El método strftime() devuelve una cadena que representa la fecha y la hora utilizando un objeto date, time o datetime.
Ejemplo 1: Convertir datetime a cadena con strftime()
El siguiente programa convierte un objeto datetime que contiene la fecha y hora actual en diferentes formatos de cadena.
from datetime import datetime
now = datetime.now() # fecha y hora actual
year = now.strftime("%Y")
print("año:", year)
month = now.strftime("%m")
print("mes:", month)
day = now.strftime("%d")
print("día:", day)
time = now.strftime("%H:%M:%S")
print("hora:", time)
date_time = now.strftime("%m/%d/%Y, %H:%M:%S")
print("fecha y hora:", date_time)
Al ejecutar el programa, la salida será similar a:
año: 2018 mes: 12 día: 24 hora: 04:59:31 fecha y hora: 12/24/2018, 04:59:31
Aquí, year, day, time y date_time son cadenas, mientras que now es un objeto datetime.
¿Cómo funciona strftime()?
En el programa anterior, %Y, %m, %d, etc., son códigos de formato. El método strftime() toma uno o más códigos de formato como argumento y devuelve una cadena formateada basada en ellos.
- Importamos la clase
datetimedel módulodatetime, ya que los objetos de esta clase pueden acceder al métodostrftime(). - El objeto
datetimeque contiene la fecha y hora actual se almacena en la variable now. - El método
strftime()se utiliza para crear cadenas formateadas. - La cadena que pasas a
strftime()puede contener más de un código de formato.
Ejemplo 2: Crear una cadena a partir de una marca de tiempo (timestamp)
from datetime import datetime
timestamp = 1528797322
date_time = datetime.fromtimestamp(timestamp)
print("Objeto datetime:", date_time)
d = date_time.strftime("%m/%d/%Y, %H:%M:%S")
print("Salida 2:", d)
d = date_time.strftime("%d %b, %Y")
print("Salida 3:", d)
d = date_time.strftime("%d %B, %Y")
print("Salida 4:", d)
d = date_time.strftime("%I%p")
print("Salida 5:", d)
Al ejecutar el programa, la salida será:
Objeto datetime: 2018-06-12 09:55:22 Salida 2: 06/12/2018, 09:55:22 Salida 3: 12 Jun, 2018 Salida 4: 12 June, 2018 Salida 5: 09AM
Lista Completa de Códigos de Formato
La siguiente tabla muestra todos los códigos que puedes pasar al método strftime().
| Directiva | Significado | Ejemplo |
|---|---|---|
%a | Nombre abreviado del día de la semana. | Dom, Lun, ... |
%A | Nombre completo del día de la semana. | Domingo, Lunes, ... |
%w | Día de la semana como número decimal. | 0, 1, ..., 6 |
%d | Día del mes como número decimal con ceros a la izquierda. | 01, 02, ..., 31 |
%-d | Día del mes como número decimal (sin ceros). | 1, 2, ..., 30 |
%b | Nombre abreviado del mes. | Ene, Feb, ..., Dic |
%B | Nombre completo del mes. | Enero, Febrero, ... |
%m | Mes como número decimal con ceros a la izquierda. | 01, 02, ..., 12 |
%-m | Mes como número decimal (sin ceros). | 1, 2, ..., 12 |
%y | Año sin siglo, con ceros a la izquierda. | 00, 01, ..., 99 |
%-y | Año sin siglo, sin ceros. | 0, 1, ..., 99 |
%Y | Año con siglo como número decimal. | 2013, 2019, etc. |
%H | Hora (reloj de 24h) con ceros a la izquierda. | 00, 01, ..., 23 |
%-H | Hora (reloj de 24h) sin ceros. | 0, 1, ..., 23 |
%I | Hora (reloj de 12h) con ceros a la izquierda. | 01, 02, ..., 12 |
%-I | Hora (reloj de 12h) sin ceros. | 1, 2, ..., 12 |
%p | AM o PM según la configuración regional. | AM, PM |
%M | Minutos con ceros a la izquierda. | 00, 01, ..., 59 |
%-M | Minutos sin ceros. | 0, 1, ..., 59 |
%S | Segundos con ceros a la izquierda. | 00, 01, ..., 59 |
%-S | Segundos sin ceros. | 0, 1, ..., 59 |
%f | Microsegundos como número decimal, con ceros a la izquierda. | 000000 - 999999 |
%z | Desplazamiento UTC en formato +HHMM o -HHMM. | |
%Z | Nombre de la zona horaria. | |
%j | Día del año con ceros a la izquierda. | 001, 002, ..., 366 |
%-j | Día del año sin ceros. | 1, 2, ..., 366 |
%U | Número de semana del año (domingo como primer día). | 00, 01, ..., 53 |
%W | Número de semana del año (lunes como primer día). | 00, 01, ..., 53 |
%c | Representación de fecha y hora según la configuración regional. | Lun Sep 30 07:06:05 2013 |
%x | Representación de fecha según la configuración regional. | 09/30/13 |
%X | Representación de hora según la configuración regional. | 07:06:05 |
%% | Carácter literal '%'. | % |
Ejemplo 3: Fecha y hora apropiadas según la configuración regional
from datetime import datetime
timestamp = 1528797322
date_time = datetime.fromtimestamp(timestamp)
d = date_time.strftime("%c")
print("Salida 1:", d)
d = date_time.strftime("%x")
print("Salida 2:", d)
d = date_time.strftime("%X")
print("Salida 3:", d)
Al ejecutar el programa, la salida será:
Salida 1: Tue Jun 12 09:55:22 2018 Salida 2: 06/12/18 Salida 3: 09:55:22
Los códigos de formato %c, %x y %X se utilizan para la representación de fecha y hora apropiada según la configuración regional.
También te recomendamos consultar strptime() en Python. El método strptime() crea un objeto datetime a partir de una cadena.
python
- Palabras clave e identificadores en Python: Dominando palabras reservadas y convenciones de nomenclatura
- Dominando tipos de datos en Python: Guía práctica
- Dominando operadores en Python: Guía completa
- Dominando argumentos de funciones en Python: Posicionales, por palabra clave y por defecto
- Dominando Diccionarios en Python: Creación, Manipulación y Técnicas Avanzadas
- Dominando Iteradores en Python: Cómo Funcionan y Cómo Crear los Tuyos
- Explicación de Closures en Python: Cómo las Funciones Anidadas Capturan Variables
- Expresiones Regulares en Python (Módulo re) – Guía Práctica
- Dominando datetime en Python: Guía Práctica de Fechas, Horas y Zonas Horarias
- Dominar el Módulo time de Python: Funciones, Structs y Ejemplos Prácticos
- Dominar time.sleep() en Python: Mejores Prácticas, Multihilo y Ejemplos Reales