Como calcular a diferença de tempo em Python
Publicados: 2022-01-23Ao trabalhar com datas e horas em Python, muitas vezes você precisará calcular a diferença de horário. Neste tutorial, você aprenderá a calcular a diferença entre dois timestamps em horas, minutos e segundos.
Ao final deste tutorial, você terá aprendido:
- como usar o módulo
datetimedo Python para trabalhar com datas e horas, - o que são objetos
timedeltae como eles são úteis, e - calcule a diferença de tempo entre quaisquer dois timestamps — em horas, minutos e segundos.
Vamos começar.
Como usar o módulo datetime do Python
Para trabalhar com datas e horas em Python, você usará o módulo datetime . O módulo datetime faz parte da biblioteca padrão do Python. Então você pode ir em frente e importá-lo para o seu ambiente de trabalho imediatamente, assim:
import datetimePara calcular a diferença de tempo, você precisa criar dois timestamps diferentes. Você pode optar por criar:
- dois objetos de
date, - dois objetos de
time, ou - uma combinação de
dateetime— objetosdatetime.
Como criar um objeto de data em Python
Vamos importar a classe date do módulo datetime. Para criar um objeto de data em Python, você pode usar a sintaxe geral datetime.date(<year>,<month>,<day>) . Aqui está um exemplo de criação de um objeto de date date1 :
from datetime import date date1 = datetime.date(2022,3,27) print(date1) # Output: 2022-03-27Você pode tentar o código no compilador Geekflare Python para testar. Ou instale o Python em seu computador.
Conforme mostrado acima, quando você imprime a data, ela é formatada no YYYY-MM-DD para datas.
Nota : Certifique-se de especificar o mês como um número inteiro sem zeros à esquerda . É provável que você esteja acostumado a adicionar um zero à esquerda ao mês ao escrever datas.
Por exemplo, para especificar uma data em junho, o 6º mês do ano: use 6 e não 06.
Por exemplo, tente executar o trecho de código a seguir, onde o mês foi mencionado como 03 em vez de apenas 3 . Você verá que ele lança um erro de sintaxe, conforme mostrado:
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 Vamos ver agora como criar um objeto de time em Python.
Como criar um objeto de tempo em Python
Para criar um objeto de tempo, vamos importar a classe de time . Qualquer objeto de tempo do Python pode ser criado usando a classe de time especificando os seguintes atributos de classe: hour , minute , second e microsecond .
No entanto, todos esses atributos são opcionais. Se você não especificar um determinado atributo, digamos, second , ele será definido como 0 por padrão.
O trecho de código a seguir mostra como você pode criar um objeto de tempo time1 . Assim como com o objeto de date , você pode imprimir o objeto de time para ver a hora formatada.
from datetime import time time1 = datetime.time(13,27,45,4600) print(time1) # Output: 13:27:45.004600Como criar um objeto de data e hora em Python
Como você pode ver, o objeto de date não possui informações sobre a hora. E o objeto time não contém informações sobre a data.
No entanto, na prática, você precisará das informações de data e hora. Portanto, é recomendável usar a classe datetime .
Você pode acessar a classe datetime e criar objetos datetime em Python, conforme mostrado abaixo:
dt1 = datetime.datetime(2022,3,27,13,27,45,46000) print(dt1) # Output: 2022-03-27 13:27:45.046000 Vamos agora criar outro objeto datetime dt2 sem o second atributo. Você pode ver que está definido como 0 – o valor padrão.
dt2 = datetime.datetime(2022,6,30,14,28) print(dt2) # Output: 2022-06-30 14:28:00Até agora, você aprendeu a criar carimbos de data/hora em Python — como datas, horas e datas. Agora é hora de ver como você pode calcular a diferença entre quaisquer dois timestamps.
Vá para a próxima seção para descobrir.
Como usar o objeto timedelta em Python
Em Python, timedelta denota um intervalo de tempo. É a diferença entre dois objetos date , time ou datetime .
Se você adicionar ou subtrair dois objetos date , time ou datetime , obterá um objeto timedelta . Esse objeto timedelta possui atributos e métodos úteis que podem ajudar a calcular a diferença de horário.
Vamos em frente e calcular a diferença entre os dois objetos datetime dt1 e 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'> A partir do trecho de código acima, você pode ver que a variável tdelta contém a diferença de tempo entre dt1 e dt2 . E o tipo de tdelta é verificado como sendo da classe timedelta usando a função type() integrada do Python.

Agora vamos codificar outro exemplo.
Como encontrar a diferença de tempo entre duas datas
Vamos dar um exemplo simples, mas interessante.
Problema : Para calcular a diferença de tempo entre a data atual (hoje) e seu aniversário.
Para fazer isso, defina hoje como o primeiro carimbo de data/hora e seu aniversário como o segundo carimbo de data/hora.
Como primeiro passo, vamos criar dois objetos datetime :
- um para hoje, vamos chamá-lo
today, e - outro para o seu aniversário, vamos chamá-lo de
bday
A classe datetime tem o método now() que fornece a data e hora locais atuais. Então vamos usá-lo para today — nossa data de referência.
today = datetime.datetime.now() print(today) # Sample Output: 2022-01-22 09:10:18.489538 No código abaixo, substitua bday por seu aniversário para calcular o tempo restante para seu aniversário este ano.
Se você estiver lendo isso depois que seu aniversário já tiver passado, sinta-se à vontade para definir o bday para o seu próximo aniversário.
bday = datetime.datetime(2022,8,30,11,59) print(bday) # Sample Output: 2022-08-30 11:59:00 O próximo passo é calcular time_diff que é um objeto timedleta , conforme explicado anteriormente. Basta subtrair today do seu bday e você terá a diferença de horário.
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 o número de dias restantes, use o atributo days em time_diff , conforme mostrado:
tdays = time_diff.days print(f"Your birthday is in {tdays} days.") # Output Your birthday is in 220 days.Como encontrar a diferença de tempo em segundos
Vamos agora calcular quantos segundos faltam para o seu aniversário.
Para calcular a diferença de tempo total em segundos, use o método total_seconds() no 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.Bem, isso é muito tempo de espera!
Dito isso, agora você sabe como calcular a diferença de tempo entre quaisquer dois timestamps em segundos.
Vamos agora revisitar alguns conceitos básicos e escrever o seguinte. Um dia é composto por 24 horas, uma hora tem 60 minutos e 60 segundos compõem um minuto.
Isso está resumido na imagem abaixo:

Portanto, para converter de segundos para minutos, horas e dias, você pode usar a tabela a seguir e dividir pelo fator de conversão correspondente.

Nas próximas seções, vamos converter a diferença horária em segundos para minutos e horas.
Como encontrar a diferença de tempo em minutos
Para obter a diferença horária em minutos, basta dividir o total de segundos por 60.
Vamos dividir tsecs por 60 e armazená-lo em uma variável chamada tmins , assim:
tmins = tsecs/60 print(f"Your birthday is {tmins} minutes away.") # Output Your birthday is 316966.0021236 minutes away.Como encontrar a diferença horária em horas
Agora que você calculou a diferença de tempo em minutos, você pode dividir isso por um fator de 60 para obter a diferença em horas. Ou você pode dividir o 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.Então agora você aprendeu a calcular a diferença de tempo em qualquer unidade de sua escolha.
Conclusão
Neste tutorial, você aprendeu como:
- crie e trabalhe com datas e horas usando o módulo
datetimedo Python, - use objetos
timedeltapara obter um intervalo de tempo, ou diferença de tempo, e - calcule a diferença horária em segundos, minutos e horas.
Espero que você tenha achado este tutorial útil. Agora que você sabe tudo sobre como calcular a diferença de tempo em Python, é hora de colocar suas habilidades em prática.
Boa aprendizagem e codificação!
Aprenda a escrever igual ou não igual ao código ou faça um jogo de cobra em python aqui.
