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:

See the gist on github.

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.

See the gist on github.

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.

See the gist on github.

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:

See the gist on github.

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

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

See the gist on github.

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.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Ver comentarios

Entradas recientes

Imprimir PDF con Bot de Telegram

La impresión de un PDF en cualquier impresora se puede automatizar con un bot de…

2 días hace

Enviar mensaje con bot de Telegram usando JavaScript (lado del cliente)

Hoy te enseñaré cómo enviar un mensaje a un usuario desde un bot de Telegram…

3 días hace

PHP: incrustar imagen en base64

El día de hoy te enseñaré algo muy sencillo pero útil al programar con PHP:…

3 días hace

Plugin ESC POS – Actualización 3.4.0: imprimir HTML

El plugin para imprimir en impresoras térmicas alcanza hoy su versión 3.4.0 agregando soporte para…

4 días hace

JavaScript (lado del cliente): leer pixeles de imagen

En ocasiones es necesario leer los pixeles y colores de una imagen con JavaScript del…

1 semana hace

PHP y JavaScript: llenar select con AJAX

Siguiendo con los tutoriales de listas desplegables o select con JavaScript, vamos a ver cómo…

2 semanas hace

Esta web usa cookies.