Todo lo que necesitas saber sobre el módulo `datetime` en Python


El manejo de fechas y horas es una de las tareas más comunes en la programación, ya sea para registrar cuándo ocurrió un evento, calcular el tiempo transcurrido o programar acciones futuras. Python ofrece una solución poderosa para esto con su módulo `datetime`, que proporciona clases y funciones para trabajar con fechas y tiempos de manera eficiente y sencilla.


En este artículo, exploraremos las características clave del módulo `datetime`, cómo usarlo para trabajar con fechas, horas, intervalos de tiempo, y algunos trucos útiles que te harán la vida más fácil como programador.



Importando el módulo `datetime`

Para comenzar a usar `datetime`, lo primero que necesitamos hacer es importarlo en nuestro script. Esto es muy sencillo:


import datetime


Este módulo incluye varias clases que permiten trabajar con diferentes aspectos de las fechas y tiempos: `date`, `time`, `datetime`, `timedelta`, entre otros. A continuación, exploraremos cada una de estas clases en detalle.



Clase `date`: Trabajando solo con fechas

La clase `date` nos permite trabajar únicamente con fechas, sin manejar horas o minutos. Por ejemplo, para crear un objeto `date`, podemos hacer lo siguiente:


from datetime import date


# Crear una fecha específica

mi_fecha = date(2024, 10, 1) # Año, Mes, Día

print(mi_fecha) # Salida: 2024-10-01



También puedes obtener la fecha actual con:


hoy = date.today()

print(hoy) # Salida: fecha actual



Algunas funciones útiles de la clase `date`:

- `year`, `month`, `day`: Estas propiedades devuelven el año, mes y día de un objeto `date`.

- `weekday()`: Devuelve el día de la semana como un entero (donde 0 es lunes y 6 es domingo).

- `isoformat()`: Devuelve la fecha en formato `AAAA-MM-DD`.



Ejemplo:


print(f"Año: {mi_fecha.year}, Mes: {mi_fecha.month}, Día: {mi_fecha.day}")

# Salida: Año: 2024, Mes: 10, Día: 1



Clase `time`: Trabajando solo con horas

Si solo necesitas manejar horas, la clase `time` es la herramienta adecuada. Te permite representar horas, minutos, segundos y microsegundos sin incluir ninguna información sobre la fecha.


from datetime import time


# Crear una hora específica

mi_hora = time(14, 30, 45) # Hora, Minuto, Segundo

print(mi_hora) # Salida: 14:30:45



Al igual que con `date`, también puedes acceder a las propiedades individuales de `time`:

- `hour`, `minute`, `second`, `microsecond`: Te permiten acceder a cada parte de la hora.


print(f"Hora: {mi_hora.hour}, Minuto: {mi_hora.minute}")

# Salida: Hora: 14, Minuto: 30



Clase `datetime`: Combinando fecha y hora

La clase `datetime` combina lo mejor de `date` y `time`, permitiendo trabajar tanto con fechas como con horas en un solo objeto.


from datetime import datetime


# Crear una fecha y hora específica

mi_fecha_hora = datetime(2024, 10, 1, 14, 30, 45)

print(mi_fecha_hora) # Salida: 2024-10-01 14:30:45



Para obtener la fecha y hora actuales, podemos usar el método `now()`:


ahora = datetime.now()

print(ahora) # Salida: fecha y hora actuales



Algunas propiedades útiles de `datetime` incluyen:

- `year`, `month`, `day`: Devuelven el año, mes y día.

- `hour`, `minute`, `second`, `microsecond`: Devuelven la hora, minuto, segundo y microsegundo.

- `strftime()`: Formatea la fecha y hora como un string en el formato que desees.


Por ejemplo, si quieres formatear la fecha y hora como `DD-MM-AAAA HH:MM:SS`:


formateado = ahora.strftime("%d-%m-%Y %H:%M:%S")

print(formateado)



Clase `timedelta`: Trabajando con intervalos de tiempo

La clase `timedelta` es extremadamente útil cuando necesitas calcular la diferencia entre dos fechas o sumar/restar intervalos de tiempo a una fecha u hora.


from datetime import timedelta


# Crear un intervalo de tiempo de 5 días

cinco_dias = timedelta(days=5)


# Sumar 5 días a la fecha actual

nueva_fecha = hoy + cinco_dias

print(nueva_fecha) # Salida: fecha 5 días después de la fecha actual



Puedes crear intervalos de tiempo basados en días, horas, minutos, segundos, e incluso microsegundos:


intervalo = timedelta(days=2, hours=3, minutes=45)

print(intervalo) # Salida: 2 días, 3 horas, 45 minutos



También puedes restar fechas para obtener un objeto `timedelta`:


diferencia = nueva_fecha - hoy

print(diferencia) # Salida: 5 days, 0:00:00



Convertir strings a objetos `datetime` y viceversa

Un escenario común es tener una fecha u hora como string y querer convertirla en un objeto `datetime`. Esto se puede lograr usando el método `strptime()`, que toma un string y lo convierte según el formato que especifiques.


fecha_str = "01-10-2024 14:30:45"

fecha_objeto = datetime.strptime(fecha_str, "%d-%m-%Y %H:%M:%S")

print(fecha_objeto) # Salida: 2024-10-01 14:30:45


El formato debe coincidir con el string que estás analizando para que funcione correctamente.



Zona horaria con `datetime`

El módulo `datetime` también soporta la manipulación de zonas horarias. Para esto, puedes usar el módulo adicional `pytz`, que te permite trabajar con distintas zonas horarias.


import pytz


# Obtener la hora actual en UTC

utc_now = datetime.now(pytz.UTC)

print(utc_now)


# Convertir a otra zona horaria

zona_horaria = pytz.timezone('America/New_York')

nueva_zona_horaria = utc_now.astimezone(zona_horaria)

print(nueva_zona_horaria) # Salida: Hora en la zona horaria de Nueva York



Hay mucho más contenido sobre Python para ti

Puedes conocer todo el contenido que comparto en mi perfil de LinkedIn

 

Puedes descargar GRATIS mi manual completo en pdf de Python Rápido


image


This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.