Diferencia entre fechas con Python

Python – Diferencia entre fechas

En este post de programación en Python y trabajo con fechas te enseñaré a sacar la diferencia que hay entre 2 fechas y luego convertir esa diferencia a segundos, minutos, horas, días, etcétera.

Con las operaciones y funciones que te mostraré serás capaz de calcular cualquier diferencia que hay entre 2 fechas incluso con segundos usando Python.

Gracias a esto podrías saber cuánto falta para determinada fecha, cuántos segundos restan hasta alcanzar una hora, o el tiempo transcurrido entre dos fechas, por ejemplo, cuántos días han pasado desde cierto evento, etcétera.

Vamos a trabajar con Python y el módulo datetime que dentro tiene a datetime y timedelta.

Las fechas

Vamos a trabajar con 2 fechas y sacar la diferencia entre ellas, pero antes de proceder a ello quiero dejar algo claro: podemos declarar las fechas o podemos solicitarlas al usuario.

En el primer caso podemos obtener la fecha actual con datetime.datetime.now(), pero para el segundo caso es distinto ya que la fecha puede venir del usuario, de una base de datos, etcétera.

Si quieres trabajar con fechas definidas desde el código usa las funciones de datetime.datetime y timedelta como explico en este post de sumar y restar fechas en Python.

Y en caso de que quieras parsear la fecha desde una cadena, usa strptime. Por ejemplo, la de la línea 3:

Nota: en los ejemplos voy a mostrar la diferencia en segundos totales, pero al final también te mostraré a convertir los segundos a minutos, horas, años, días, etcétera.

Diferencia entre 2 fechas según cadena

Para este primer ejemplo veamos cómo obtener la diferencia entre dos fechas que son proporcionadas según una cadena.

La salida para este caso es:

La diferencia es de 6 días y 0 segundos. La diferencia total es de 518400.0 segundos

Lo que yo sugiero es que siempre obtengas el total de segundos a través de total_seconds y a partir de ahí hagas las conversiones, ya que el resultado de tipo timedelta es un poco confuso al inicio.

Por cierto, como puedes ver todo es correcto, ya que hay exactamente 6 días de diferencia entre esas dos fechas.

El objeto de tipo timedelta en Python

Podemos obtener varios datos de la diferencia de fechas, o mejor dicho, obtener la diferencia de fechas expresado de distintas maneras.

Yo sigo recomendado obtenerlo a partir de total_seconds pero también podemos acceder a days, seconds y microseconds. Solo que no son valores separados, sino que la suma de los mismos nos dará la verdadera diferencia.

Por ejemplo, si la diferencia es de 2 días y 10 minutos, days estará en 2 y seconds en 120. Es decir, los valores days, seconds y microseconds se suman. Entonces es mejor usar total_seconds si quieres una diferencia precisa.

Diferencia entre dos timedelta

Ahora veamos el otro ejemplo, en donde sumamos y restamos fechas para tener una fecha del futuro y poder indicar la diferencia.

La salida será: 180000.0 y eso es correcto, ya que son los segundos transcurridos que se convertirán a 50 horas.

Convirtiendo segundos a días, horas, minutos y segundos

Como viste en los ejemplos anteriores estamos obteniendo los segundos totales, pero ahora te mostraré cómo convertirlos a algo legible o mejor dicho a extraer los valores (como en el ejemplo de convertir segundos a horas, minutos y segundos).

Aquí la función:

En este caso estoy considerando hasta los días, pero incluso podrías sacar los años y todo eso. Por cierto, estoy regresando los valores en una oración como cadena, pero puedes regresarlos como una tupla, arreglo, etcétera. Al final queda en ti.

Poniendo todo junto

Diferencia entre fechas con Python
Diferencia entre fechas con Python

El código de ejemplo que saca la diferencia entre dos fechas con Python y muestra el tiempo legible queda así:

El ejemplo va a funcionar con fechas proporcionadas como cadena y con fechas de resultado de timedelta. Finalmente te dejo con más tutoriales de Python.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

2 comentarios en “Python – Diferencia entre fechas”

Dejar un comentario