Acordeón de los Índices
Índice de los temas
Datetime
🕰️ Datetime: El Módulo para Fechas y Horas en Python
Python proporciona un módulo built-in llamado datetime
que ofrece clases
para trabajar con fechas y horas. Este módulo es esencial para cualquier tarea que
involucre la manipulación de información temporal.
El módulo datetime
contiene varias clases importantes:
datetime.date
: Representa una fecha (año, mes, día).datetime.time
: Representa una hora (hora, minuto, segundo, microsegundo).datetime.datetime
: Representa una combinación de fecha y hora (año, mes, día, hora, minuto, segundo, microsegundo).datetime.timedelta
: Representa una duración, la diferencia entre dos fechas u horas.datetime.timezone
: Implementa la clase base abstracta para objetos de zona horaria.datetime.tzinfo
: Proporciona información sobre zonas horarias.
Para utilizar estas clases, primero necesitas importar el módulo datetime
en
tu script:
import datetime
La Clase datetime.datetime
: El Corazón del Tiempo
La clase datetime.datetime
es una de las más utilizadas. Permite crear
objetos que representan un instante específico en el tiempo, con información tanto de la
fecha como de la hora.
Ejemplo Básico con datetime.datetime
:
import datetime
ahora = datetime.datetime.now()
print(ahora)
print(type(ahora))
Al ejecutar este código, la variable ahora
contendrá un objeto
datetime
que representa la fecha y hora actuales de tu sistema. La salida
mostrará la fecha y hora en formato AAAA-MM-DD HH:MM:SS.mmmmmm.
Accediendo a los Componentes de un Objeto datetime
:
Puedes acceder a los componentes individuales de un objeto datetime
utilizando sus atributos:
year
month
day
hour
minute
second
microsecond
Ejemplo Accediendo a Componentes:
import datetime
ahora = datetime.datetime.now()
print(f"Año: {ahora.year}")
print(f"Mes: {ahora.month}")
print(f"Día: {ahora.day}")
print(f"Hora: {ahora.hour}")
print(f"Minuto: {ahora.minute}")
print(f"Segundo: {ahora.second}")
print(f"Microsegundo: {ahora.microsecond}")
En los siguientes temas, exploraremos las clases datetime.date
y cómo
trabajar específicamente con fechas.
Dates
📅 Dates: Representando Fechas en Python
La clase datetime.date
en Python te permite crear y manipular objetos que
representan fechas calendario. Un objeto date
tiene tres atributos
principales: year
, month
y day
.
Creando Objetos date
:
Puedes crear un objeto date
de varias maneras:
1. Especificando Año, Mes y Día:
La forma más directa es utilizando el constructor de la clase date()
, que
requiere tres argumentos enteros: año, mes y día.
import datetime
fecha_nacimiento = datetime.date(1990, 5, 15)
print(fecha_nacimiento)
print(type(fecha_nacimiento))
Esto creará un objeto date
representando el 15 de mayo de 1990.
2. Obteniendo la Fecha Actual:
Puedes obtener la fecha actual utilizando el método de clase today()
.
import datetime
hoy = datetime.date.today()
print(hoy)
Esto creará un objeto date
con la fecha actual (en Madrid, Comunidad de
Madrid, España, hoy es 2025-04-23).
3. A partir de un Timestamp:
También puedes crear un objeto date
a partir de un timestamp (el número de
segundos transcurridos desde la "época", que es el 1 de enero de 1970 en UTC) utilizando
el método de clase fromtimestamp()
.
import datetime
import time
timestamp = time.time()
fecha_desde_timestamp = datetime.date.fromtimestamp(timestamp)
print(fecha_desde_timestamp)
Accediendo a los Atributos de un Objeto date
:
Una vez que tienes un objeto date
, puedes acceder a sus componentes
individuales:
import datetime
hoy = datetime.date.today()
print(f"Año: {hoy.year}")
print(f"Mes: {hoy.month}")
print(f"Día: {hoy.day}")
Operaciones con Objetos date
:
Los objetos date
admiten ciertas operaciones, como la comparación
(==
, !=
, <
, >
,
<=
, >=
) y la resta para obtener un objeto
datetime.timedelta
(que representa una duración).
import datetime
fecha1 = datetime.date(2025, 4, 20)
fecha2 = datetime.date(2025, 4, 25)
print(fecha1 < fecha2)
diferencia = fecha2 - fecha1
print(diferencia)
print(type(diferencia))
En el siguiente tema, veremos cómo se muestran los objetos date
por defecto
y cómo podemos personalizar su salida.
Date Output
📤 Date Output: La Representación de las Fechas
Cuando imprimes un objeto datetime.date
en Python, se muestra por defecto en
un formato estándar ISO 8601: AAAA-MM-DD
(Año-Mes-Día).
Formato de Salida por Defecto:
import datetime
hoy = datetime.date.today()
print(hoy)
fecha_especifica = datetime.date(2023, 10, 26)
print(fecha_especifica)
La salida de este código sería:
2025-04-23
2023-10-26
Este formato es claro y universalmente reconocido, lo que lo convierte en una buena opción por defecto.
Personalizando la Salida de Fechas con strftime()
:
Sin embargo, a menudo necesitas mostrar las fechas en un formato diferente para tus
usuarios o para cumplir con ciertos requisitos de formato. Para esto, los objetos
date
(y también los objetos datetime
y time
)
tienen un método muy útil llamado strftime()
. Este método te permite
formatear la fecha (u hora) en una cadena de texto utilizando una serie de códigos de
formato.
Códigos de Formato Comunes para Fechas:
%Y
: Año con siglo como número decimal (ej. 2023).%y
: Año sin siglo como número decimal con cero a la izquierda (ej. 23).%m
: Mes como número decimal con cero a la izquierda (01-12).%B
: Nombre completo del mes según la localización (ej. April).%b
o%h
: Nombre abreviado del mes según la localización (ej. Apr).%d
: Día del mes como número decimal con cero a la izquierda (01-31).%A
: Nombre completo del día de la semana según la localización (ej. Wednesday).%a
: Nombre abreviado del día de la semana según la localización (ej. Wed).%w
: Día de la semana como número decimal, donde el lunes es 0 y el domingo es 6.%j
: Día del año como número decimal con cero a la izquierda (001-366).%U
: Número de semana del año (domingo como primer día de la semana) como número decimal con cero a la izquierda (00-53).%W
: Número de semana del año (lunes como primer día de la semana) como número decimal con cero a la izquierda (00-53).%c
: Representación de fecha y hora preferida según la localización.%x
: Representación de fecha preferida según la localización.
Ejemplos de Formateo de Fechas con strftime()
:
import datetime
hoy = datetime.date.today()
formato1 = hoy.strftime("%d/%m/%Y")
print(f"Formato 1 (dd/mm/aaaa): {formato1}")
formato2 = hoy.strftime("%B %d, %Y")
print(f"Formato 2 (Mes día, año): {formato2}")
formato3 = hoy.strftime("%a, %d %b %Y")
print(f"Formato 3 (Día abr, día mes año): {formato3}")
formato4 = hoy.strftime("%d-%m-%y")
print(f"Formato 4 (dd-mm-aa): {formato4}")
La salida de este código (en Madrid el 23 de abril de 2025) sería:
Formato 1 (dd/mm/aaaa): 23/04/2025
Formato 2 (Mes día, año): April 23, 2025
Formato 3 (Día abr, día mes año): Wed, 23 Apr 2025
Formato 4 (dd-mm-aa): 23-04-25
Como puedes ver, el método strftime()
te da un control total sobre cómo se
representa la fecha como una cadena de texto.
En el siguiente tema, aprenderemos cómo crear objetos date
de forma
explícita.
Creating Date Objects
🛠️ Creating Date Objects: Dando Vida a las Fechas
Como mencionamos anteriormente, la clase datetime.date
ofrece varios
constructores y métodos de clase para crear objetos de fecha.
1. El Constructor date(year, month, day)
:
Esta es la forma más directa de crear un objeto date
. Debes proporcionar el
año, el mes y el día como números enteros. Es importante recordar que:
- El año debe ser un entero dentro del rango permitido por la implementación
(generalmente de
MINYEAR
aMAXYEAR
en el módulodatetime
, que suelen ser bastante amplios). - El mes debe ser un entero entre 1 y 12 (inclusive).
- El día debe ser un entero válido para el mes y el año dados (por ejemplo, no puedes
tener el 31 de abril). Python generará un error
ValueError
si los argumentos no son válidos.
import datetime
fecha1 = datetime.date(2020, 2, 29) # Año bisiesto
print(fecha1)
fecha2 = datetime.date(2023, 6, 10)
print(fecha2)
# Intentar crear una fecha inválida generará un ValueError
# fecha_invalida = datetime.date(2023, 2, 30) # Esto causará un error
2. El Método de Clase today()
:
Este método de clase devuelve el objeto date
correspondiente a la fecha
local actual.
import datetime
hoy = datetime.date.today()
print(hoy)
3. El Método de Clase fromtimestamp(timestamp)
:
Como vimos antes, este método crea un objeto date
a partir de un timestamp
(un número de segundos desde la época).
import datetime
import time
timestamp_actual = time.time()
fecha_desde_ts = datetime.date.fromtimestamp(timestamp_actual)
print(fecha_desde_ts)
4. El Método de Clase fromordinal(ordinal)
:
Este método crea un objeto date
a partir de un "ordinal gregoriano". El
ordinal gregoriano del 1 de enero del año 1 es 1. Los ordinales para las fechas
posteriores son secuenciales.
import datetime
# El ordinal para el 1 de enero de 2025
ordinal_2025_01_01 = datetime.date(2025, 1, 1).toordinal()
print(f"Ordinal del 1 de enero de 2025: {ordinal_2025_01_01}")
fecha_desde_ordinal = datetime.date.fromordinal(ordinal_2025_01_01)
print(f"Fecha desde el ordinal: {fecha_desde_ordinal}")
# Podemos obtener el ordinal de cualquier objeto date
hoy = datetime.date.today()
ordinal_hoy = hoy.toordinal()
print(f"Ordinal de hoy ({hoy}): {ordinal_hoy}")
fecha_desde_ordinal_hoy = datetime.date.fromordinal(ordinal_hoy)
print(f"Fecha desde el ordinal de hoy: {fecha_desde_ordinal_hoy}")
El método fromordinal()
puede ser útil en cálculos que involucran la
diferencia entre fechas.
Consideraciones al Crear Objetos date
:
- Validación: Python realiza validación básica de los argumentos (rango del mes, validez del día para el mes y año).
- Inmutabilidad: Los objetos
date
son inmutables, lo que significa que una vez creados, no se pueden modificar. Las operaciones que parecen modificarlos en realidad crean nuevos objetosdate
.
Ahora que sabemos cómo crear objetos de fecha de diversas maneras, vamos a explorar el
método strftime()
con más detalle, ya que es crucial para formatear las
fechas para su presentación.
The strftime() Method
⚙️ El Método strftime()
: Dando Formato a Fechas y
Horas
El método strftime()
(abreviatura de "string format time") se llama en un
objeto date
, datetime
o time
y toma una cadena de
formato como argumento. Esta cadena de formato contiene uno o más códigos de formato,
cada uno precedido por un signo de porcentaje (%
), que se reemplazan con
los valores correspondientes de la fecha u hora.
Sintaxis:
objeto_fecha.strftime(formato)
objeto_datetime.strftime(formato)
objeto_hora.strftime(formato)
Tabla de Códigos de Formato Comunes:
Aquí tienes una tabla más completa de los códigos de formato más utilizados:
Código | Significado | Ejemplo |
---|---|---|
%Y |
Año con siglo como número decimal. | 2023 |
%y |
Año sin siglo como número decimal con cero a la izquierda. | 23 |
%m |
Mes como número decimal con cero a la izquierda. | 04 |
%B |
Nombre completo del mes según la localización. | April |
%b o %h |
Nombre abreviado del mes según la localización. | Apr |
%d |
Día del mes como número decimal con cero a la izquierda. | 23 |
%A |
Nombre completo del día de la semana según la localización. | Wednesday |
%a |
Nombre abreviado del día de la semana según la localización. | Wed |
%w |
Día de la semana como número decimal (domingo=0, lunes=1, ..., sábado=6). | 3 (para Wednesday) |
%j |
Día del año como número decimal con cero a la izquierda (001-366). | 113 (para el 23 de abril) |
%H |
Hora (reloj de 24 horas) como número decimal con cero a la izquierda (00-23). | 14 |
%I |
Hora (reloj de 12 horas) como número decimal con cero a la izquierda (01-12). | 02 |
%M |
Minuto como número decimal con cero a la izquierda (00-59). | 30 |
%S |
Segundo como número decimal con cero a la izquierda (00-59). | 15 |
%f |
Microsegundo como número decimal con cero a la izquierda (000000-999999). | 000000 |
%p |
Equivalente según la localización de AM o PM. | PM |
%Z |
Nombre de la zona horaria (vacío si no se conoce). | CEST |
%% |
Un carácter literal '%'. | % |
%c |
Representación de fecha y hora preferida según la localización. | Wed Apr 23 11:36:15 2025 |
%x |
Representación de fecha preferida según la localización. | 04/23/25 |
%X |
Representación de hora preferida según la localización. | 11:36:15 |
Ejemplos Combinando Códigos de Formato:
import datetime
ahora = datetime.datetime.now()
formato_completo = ahora.strftime("%Y-%m-%d %H:%M:%S")
print(f"Formato completo: {formato_completo}")
formato_dia_mes_anio_hora_minutos = ahora.strftime("%d %b %Y %H:%M")
print(f"Día Mes Año Hora:Minutos: {formato_dia_mes_anio_hora_minutos}")
formato_solo_hora_minutos_segundos = ahora.strftime("%I:%M:%S %p")
print(f"Solo hora (12h): {formato_solo_hora_minutos_segundos}")
hoy_formateado = ahora.strftime("Hoy es %A, %d de %B de %Y.")
print(hoy_formateado)
La salida de este código (aproximadamente a la hora actual en Madrid) sería:
Formato completo: 2025-04-23 11:36:15
Día Mes Año Hora:Minutos: 23 Apr 2025 11:36
Solo hora (12h): 11:36:15 AM
Hoy es Wednesday, 23 de April de 2025.
Consideraciones sobre la Localización:
Los nombres de los meses y los días de la semana (%B
, %b
,
%A
, %a
) y las representaciones preferidas (%c
,
%x
, %X
) dependen de la configuración de localización de tu
sistema operativo. Python utiliza esta información para generar las cadenas formateadas.
El método strftime()
es una herramienta increíblemente flexible para
presentar fechas y horas de la manera que necesites en tus aplicaciones.
Con esto, hemos cubierto los temas principales sobre cómo trabajar con fechas en Python.
¿Tienes alguna pregunta sobre strftime()
o sobre algún otro aspecto que
hayamos visto?
0 Comentarios
Si desea contactar comigo, lo puede hacer atravez deste formulario gracias