Cómo calcular la diferencia horaria en Python
Publicado: 2022-01-23Cuando 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
ytime
: objetos de fecha ydatetime
.
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:

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.

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