Fechas en Python (Restar fechas, sumar días, semanas, etc.)

En este tutorial explicamos cómo trabajar con fechas en Python. Te decimos el código para restar fechas, sumar días, restar semanas, horas, etc. Todo eso se hace con la librería datetime incluida en Python.

Resumen rápido Python fechas.

En este resumen rápido explicamos los comandos para trabajar con fechas en Python, más adelante dejamos ejemplos por si quieres más detalles.

La documentación oficial aquí. https://docs.python.org/3/library/datetime.html

Primero se importa la siguiente librería:

import datetime
from datetime import date
from datetime import timedelta

Para la fecha de hoy usamos:

hoy = date.today()

Para crear una fecha cualquiera, usamos el siguiente comando que tiene como parámetros (Año, Mes, Día).

d = date(2022, 5, 21)

Para restar dos fechas dando como resultado el número de días, puede ser negativo. (No se pueden sumar dos fechas, solo sumarle días a una fecha).

d1 = date(2022, 5, 21)

d2 = date(2022, 5, 16)

resta = d1 – d2

Para restar y sumar días a una fecha se usa la función timedelta, que puede tener periodos de tiempo como semanas (weeks), días (days), minutos (minutes), etc. En este caso, creamos un timedelta de 3 días.

d1 = date(2022, 5, 21)

dias = datetime.timedelta(days=3)

resta = d1 – dias

La función timedelta tiene los siguientes parámetros, que por default tienen un valor de cero.

  • weeks, número de semanas.
  • days, número de días.
  • hours, número de horas.
  • minutes, número de minutos.
  • seconds, número de segundos.
  • milliseconds, número de milisegundos.
  • microseconds, número de microsegundos.

NOTA:

Estos parámetros se convierten a unidades mayores. Por ejemplo, si escribimos 85 minutos al imprimir el resultado veremos 1:25:00 (una hora 25 minutos).

Excepto en los días y las semanas, siempre nos imprimirá los días. Por ejemplo, una semana se convierte a 7 días. Pero 13 días, siguen siendo 13 días, sin convertir a semanas.

 

Restar dos fechas en Python usando datetime.

En el resumen rápido para datetime, ya se explicaron que comandos se usan, aquí haremos un ejemplo para dejarlo más claro y ver ciertos detalles importantes.

Vamos a introducir dos fechas y las vamos a restar. Imprimiremos el resultado para ver si es correcto.

import datetime
from datetime import date
from datetime import timedelta

d1 = date(2022, 4, 21)
d2 = date(2022, 4, 12)

print(d1-d2)       ## 9 Días
print(d2-d1)       ## -9 Días

d1 = date(2022, 5, 10)
d2 = date(2022, 4, 12)

print(d1-d2)        ##28 Días

Restar días a una fecha Python

En el código anterior vemos que podemos restar fácilmente dos fechas. Y podemos obtener números negativos indicando que la fecha que está restando es mayor.

Reemplazar fechas en Python.

Si por alguna razón queremos reemplazar el mes, el dia o el año de una fecha podemos usar la función replace.

import datetime
from datetime import date
from datetime import timedelta

d1 = date(2022, 4, 21)
print(d1)

d2 = d1.replace(month=2)
print(d2)

Reemplazar fechas Python

Tiene como parámetros:

  • year, reemplaza el año.
  • month, reemplaza el mes.
  • day, reemplaza el día.

 

Sumar días a una fecha en Python.

Como lo vimos en el resumen rápido, con la función timedelta, podemos crear una cantidad de días, asi podremos restar y sumar días a una fecha.

import datetime
from datetime import date
from datetime import timedelta

d1 = date(2022, 4, 2)
dias7 = datetime.timedelta(days=7)
dias30 = datetime.timedelta(days=30)

d2 = d1 - dias7
d3 = d1 + dias30

print(f"Original: {d1}")
print(f"Menos 7 días: {d2}")
print(f"Más 30 días: {d3}")

Restar fechas python

En el código, tenemos una fecha base (d1) y creamos un timedelta de 7 días y otro de 30 días.

Luego a la fecha base le restamos 7 días y lo guardamos en d2.

Después a la fecha base le sumamos 30 días y lo guardamos en d3.

Al final imprimimos todo. Este tipo de formatos para imprimir puedes verlo en este tutorial:

Concatenar en Python (+, %, *, f string)

Para más tutoriales de Python ve a este enlace.

Algunos temas que te pueden interesar:

Ordenar arreglo en Python (array sort)

Instalar TKINTER en Python y que es.