Cómo calcular la diferencia horaria en Python

Publicado: 2022-01-23

Cuando trabaje con fechas y horas en Python, a menudo necesitará calcular la diferencia horaria. En este tutorial, aprenderá a calcular la diferencia entre dos marcas de tiempo en horas, minutos y segundos.

Al final de este tutorial, habrás aprendido:

  • cómo usar el módulo de fecha y datetime de Python para trabajar con fechas y horas,
  • qué son los objetos timedelta , y cómo son útiles, y
  • calcule la diferencia de tiempo entre dos marcas de tiempo, en horas, minutos y segundos.

Empecemos.

Cómo usar el módulo de fecha y hora de Python

Para trabajar con fechas y horas en Python, utilizará el módulo de datetime . El módulo de datetime es parte de la biblioteca estándar de Python. De modo que puede seguir adelante e importarlo a su entorno de trabajo de inmediato, así:

 import datetime

Para calcular la diferencia horaria, debe crear dos marcas de tiempo diferentes. Puedes elegir crear:

  • dos objetos de date ,
  • dos objetos de time , o
  • una combinación de date y time : objetos de fecha y datetime .

Cómo crear un objeto de fecha en Python

Importemos la clase de date del módulo de fecha y hora. Para crear un objeto de fecha en Python, puede usar la sintaxis general datetime.date(<year>,<month>,<day>) . Aquí hay un ejemplo de cómo crear un objeto de date date1 :

 from datetime import date date1 = datetime.date(2022,3,27) print(date1) # Output: 2022-03-27

Puede probar el código en el compilador Geekflare Python para probar. O instala Python en tu computadora.

Como se muestra arriba, cuando imprime la fecha, tiene el formato YYYY-MM-DD para las fechas.

Nota : Asegúrese de especificar el mes como un número entero sin ceros a la izquierda. Es probable que esté acostumbrado a agregar un cero inicial al mes cuando escribe fechas.

Por ejemplo, para especificar una fecha en junio, el sexto mes del año: use 6 y no 06.

Por ejemplo, intente ejecutar el siguiente fragmento de código, donde el mes se menciona como 03 en lugar de solo 3 . Verá que arroja un error de sintaxis como se muestra:

 date1 = datetime.date(2022,03,27) print(date1) # Error Message File "<ipython-input-12-6eb72084e6ce>", line 1 date1 = datetime.date(2022,03,27) ^ SyntaxError: invalid token

Veamos ahora cómo crear un objeto de time en Python.

Cómo crear un objeto de tiempo en Python

Para crear un objeto de tiempo, importemos la clase de time . Cualquier objeto de tiempo de Python se puede crear utilizando la clase de time especificando los siguientes atributos de clase: hour , minute , second y microsecond .

Sin embargo, todos estos atributos son opcionales. Si no especifica un determinado atributo, por ejemplo, second , se establece en 0 de forma predeterminada.

El siguiente fragmento de código muestra cómo puede crear un objeto de tiempo time1 . Al igual que con el objeto de date , puede imprimir el objeto de time para ver la hora formateada.

 from datetime import time time1 = datetime.time(13,27,45,4600) print(time1) # Output: 13:27:45.004600

Cómo crear un objeto de fecha y hora en Python

Como puede ver, el objeto de date no tiene información sobre la hora. Y el objeto de time no contiene información sobre la fecha.

Sin embargo, en la práctica, necesitará la información de la fecha y la hora. Por lo tanto, se recomienda utilizar la clase de datetime y hora en su lugar.

Puede acceder a la clase de datetime y hora y crear objetos de fecha y datetime en Python, como se muestra a continuación:

 dt1 = datetime.datetime(2022,3,27,13,27,45,46000) print(dt1) # Output: 2022-03-27 13:27:45.046000

Ahora vamos a crear otro objeto de fecha y hora dt2 sin el second atributo. Puede ver que está establecido en 0 , el valor predeterminado.

 dt2 = datetime.datetime(2022,6,30,14,28) print(dt2) # Output: 2022-06-30 14:28:00

Hasta ahora ha aprendido a crear marcas de tiempo en Python, como fechas, horas y fechas y horas. Ahora es el momento de ver cómo puede calcular la diferencia entre dos marcas de tiempo.

Dirígete a la siguiente sección para averiguarlo.

Cómo usar el objeto timedelta en Python

En Python, timedelta denota un lapso de tiempo. Es la diferencia entre dos objetos de date , time o datetime y hora.

Si agrega o resta dos objetos date , time o datetime , obtendrá un objeto timedelta . Este objeto timedelta tiene atributos y métodos útiles que pueden ayudar a calcular la diferencia horaria.

dt1 datetime dt2 .

 dt1 = datetime.datetime(2022,3,27,13,27,45,46000) dt2 = datetime.datetime(2022,6,30,14,28) tdelta = dt2 - dt1 print(tdelta) print(type(tdelta)) # Output 95 days, 1:00:14.954000 <class 'datetime.timedelta'>

En el fragmento de código anterior, puede ver que la variable tdelta contiene la diferencia de tiempo entre dt1 y dt2 . Y se verifica que el tipo de tdelta sea de la clase timedelta utilizando la función type() integrada de Python.

Ahora codifiquemos otro ejemplo.

Cómo encontrar la diferencia horaria entre dos fechas

Tomemos un ejemplo simple pero interesante.

Problema : Calcular la diferencia horaria entre la fecha actual (hoy) y tu cumpleaños.
Para hacer esto, configure hoy como la primera marca de tiempo y su cumpleaños como la segunda marca de tiempo.

Como primer paso, vamos a crear dos objetos de datetime :

  • uno para hoy, llamémoslo today , y
  • otro para tu cumpleaños, llamémoslo bday

La clase datetime tiene el método now() que le brinda la fecha y hora local actual. Así que usémoslo today , nuestra fecha de referencia.

 today = datetime.datetime.now() print(today) # Sample Output: 2022-01-22 09:10:18.489538

En el código a continuación, reemplace bday con su cumpleaños para calcular el tiempo restante para su cumpleaños este año.

Si está leyendo esto después de que haya pasado su cumpleaños, siéntase libre de establecer el día de su próximo bday .

 bday = datetime.datetime(2022,8,30,11,59) print(bday) # Sample Output: 2022-08-30 11:59:00

El siguiente paso es calcular time_diff que es un objeto timedleta , como se explicó anteriormente. Simplemente reste today de su bday y obtendrá la diferencia horaria.

 time_diff = bday - today print(f"Your birthday is in {time_diff}") # Output Your birthday is in 220 days, 2:46:00.127416

Para saber el número de días restantes, use el atributo days en time_diff , como se muestra:

 tdays = time_diff.days print(f"Your birthday is in {tdays} days.") # Output Your birthday is in 220 days.

Cómo encontrar la diferencia de tiempo en segundos

Calculemos ahora a cuántos segundos falta tu cumpleaños.

Para calcular la diferencia de tiempo total en segundos, use el método total_seconds() en el objeto timedelta time_diff .

 tsecs = time_diff.total_seconds() print(f"Your birthday is {tsecs} seconds away.") # Output Your birthday is 19017960.127416 seconds away.

Bueno, ¡esa es una espera demasiado larga!

Dicho esto, ahora sabe cómo calcular la diferencia de tiempo entre dos marcas de tiempo en segundos.

Ahora revisemos algunos conceptos básicos y escribamos lo siguiente. Un día se compone de 24 horas, una hora tiene una duración de 60 minutos y 60 segundos componen un minuto.

Esto se resume en la siguiente imagen:

Horas, Minutos y Segundos

Entonces, para convertir de segundos a minutos, horas y días, puede usar la siguiente tabla y dividir por el factor de conversión correspondiente.

Tabla de conversión de tiempo

En las siguientes secciones, convertiremos la diferencia horaria en segundos a minutos y horas.

Cómo encontrar la diferencia horaria en minutos

Para obtener la diferencia horaria en minutos, solo necesitas dividir el total de segundos por 60.

tsecs por 60 y almacenémoslo en una variable llamada tmins , así:

 tmins = tsecs/60 print(f"Your birthday is {tmins} minutes away.") # Output Your birthday is 316966.0021236 minutes away.

Cómo encontrar la diferencia horaria en horas

Ahora que ha calculado la diferencia horaria en minutos, puede dividirla por un factor de 60 para obtener la diferencia en horas. O podrías dividir el total de segundos por 60*60 = 3600.

 thrs = tsecs/(60*60) print(f"Your birthday is {thrs} hours away.") # Output Your birthday is 5282.76670206 hours away.

Ahora ha aprendido a calcular la diferencia horaria en cualquier unidad de su elección.

Conclusión

En este tutorial, ha aprendido cómo:

  • crear y trabajar con fechas y horas usando el módulo datetime de Python,
  • use objetos timedelta para obtener un lapso de tiempo, o diferencia de tiempo, y
  • calcular la diferencia horaria en segundos, minutos y horas.

Espero que hayas encontrado útil este tutorial. Ahora que sabe todo sobre el cálculo de la diferencia horaria en Python, es hora de poner en práctica sus habilidades.

¡Feliz aprendizaje y codificación!

Aprenda a escribir código igual o no igual o haga un juego de serpientes en python aquí.