Ao manipular datas e horários em Python, surge frequentemente a necessidade de calcular a diferença temporal. Este guia prático irá orientá-lo sobre como determinar a diferença entre dois timestamps, expressando-a em horas, minutos e segundos.
Ao concluir este tutorial, você terá adquirido o conhecimento necessário para:
- Utilizar o módulo datetime do Python para efetuar operações com datas e horários;
- Compreender o conceito de objetos timedelta e sua aplicação prática;
- Calcular a diferença temporal entre dois timestamps quaisquer, apresentando o resultado em horas, minutos e segundos.
Vamos iniciar nossa jornada de aprendizado!
Dominando o Módulo datetime do Python
O módulo datetime é sua ferramenta essencial para lidar com datas e horários em Python. Integrado à biblioteca padrão da linguagem, ele pode ser importado diretamente para seu ambiente de desenvolvimento da seguinte maneira:
import datetime
Para calcular a diferença de tempo, é necessário estabelecer dois pontos de referência temporais distintos. Você pode optar por criar:
- Dois objetos representando datas;
- Dois objetos representando horários; ou
- Uma combinação de data e hora, utilizando objetos datetime.
Construindo um Objeto de Data em Python
Vamos importar a classe `date` do módulo `datetime`. A criação de um objeto de data em Python é feita através da sintaxe `datetime.date(
from datetime import date date1 = datetime.date(2022,3,27) print(date1) # Saída: 2022-03-27
Você pode testar este código no compilador do etechpt.com ou instalar o Python em sua máquina.
Como demonstrado, ao imprimir um objeto de data, ele é formatado no padrão AAAA-MM-DD.
Atenção: Ao especificar o mês, utilize um número inteiro, sem zeros à esquerda. É comum a prática de adicionar um zero à esquerda ao escrever datas.
Por exemplo, para representar junho, o sexto mês do ano, utilize o número 6, e não 06.
Para ilustrar este ponto, observe o seguinte trecho de código. Ao especificar o mês como 03 em vez de 3, você receberá um erro de sintaxe:
date1 = datetime.date(2022,03,27)
print(date1)
# Mensagem de Erro
File "<ipython-input-12-6eb72084e6ce>", line 1
date1 = datetime.date(2022,03,27)
^
SyntaxError: invalid token
Agora, vamos aprender como criar um objeto de tempo em Python.
Construindo um Objeto de Tempo em Python
Para criar um objeto de tempo, vamos importar a classe `time`. Objetos de tempo em Python são construídos utilizando a classe `time`, especificando atributos como hora, minuto, segundo e microssegundo.
Todos esses atributos são opcionais. Caso um atributo não seja especificado, por exemplo, o segundo, ele assumirá o valor padrão 0.
O código a seguir demonstra a criação de um objeto de tempo chamado `time1`. Assim como com objetos de data, você pode imprimir o objeto de tempo para visualizar o horário formatado:
from datetime import time time1 = datetime.time(13,27,45,4600) print(time1) # Saída: 13:27:45.004600
Construindo um Objeto de Data e Hora em Python
Como vimos, o objeto de data não contém informações sobre o horário, e o objeto de tempo não contém informações sobre a data.
Em muitos casos, você precisará de ambas as informações. Por isso, a classe `datetime` é a mais recomendada.
Você pode criar objetos `datetime` em Python conforme o exemplo:
dt1 = datetime.datetime(2022,3,27,13,27,45,46000) print(dt1) # Saída: 2022-03-27 13:27:45.046000
Agora, vamos criar outro objeto `datetime` chamado `dt2`, omitindo o atributo de segundo. Observe que ele é definido com o valor padrão 0.
dt2 = datetime.datetime(2022,6,30,14,28) print(dt2) # Saída: 2022-06-30 14:28:00
Até agora, você aprendeu a criar timestamps em Python – datas, horários e datas e horários combinados. Agora, vamos explorar como calcular a diferença entre quaisquer dois timestamps.
Acompanhe a próxima seção para descobrir!
O Poder do Objeto timedelta em Python
Em Python, `timedelta` representa um intervalo de tempo, a diferença entre dois objetos de data, hora ou data e hora.
Ao subtrair dois objetos de data, hora ou data e hora, o resultado é um objeto `timedelta`. Este objeto possui atributos e métodos úteis para auxiliar no cálculo de diferenças temporais.
Vamos calcular a diferença entre os 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)) # Saída 95 days, 1:00:14.954000 <class 'datetime.timedelta'>
O código demonstra que a variável `tdelta` armazena a diferença de tempo entre `dt1` e `dt2`. O tipo de `tdelta` é verificado como sendo da classe `timedelta` utilizando a função built-in type().
Vamos analisar outro exemplo prático.
Calculando a Diferença de Tempo entre Datas
Vamos abordar um problema simples e interessante:
Calcular a diferença de tempo entre a data atual e o seu aniversário. Para isso, vamos definir o timestamp atual como o primeiro ponto de referência e o seu aniversário como o segundo.
Inicialmente, criaremos dois objetos `datetime`:
- Um para a data atual, que chamaremos de `today`;
- Outro para o seu aniversário, que chamaremos de `birthday`.
A classe `datetime` possui o método `now()`, que retorna a data e hora local atual. Vamos utilizá-lo para definir a data de referência, `today`:
today = datetime.datetime.now() print(today) # Exemplo de Saída: 2022-01-22 09:10:18.489538
No código a seguir, substitua `bday` pela data do seu aniversário para calcular o tempo restante para a data neste ano.
Caso esteja lendo este artigo após seu aniversário, sinta-se à vontade para definir a data para o seu próximo aniversário.
bday = datetime.datetime(2022,8,30,11,59) print(bday) # Exemplo de Saída: 2022-08-30 11:59:00
O próximo passo é calcular a diferença de tempo, que é um objeto `timedelta`, conforme explicado anteriormente. Subtraia a data atual (`today`) da data do seu aniversário (`bday`) para obter a diferença temporal.
time_diff = bday - today
print(f"Seu aniversário é em {time_diff}")
# Saída
Seu aniversário é em 220 dias, 2:46:00.127416
Para obter o número de dias restantes, utilize o atributo `days` do objeto `time_diff`:
tdays = time_diff.days
print(f"Seu aniversário é em {tdays} dias.")
# Saída
Seu aniversário é em 220 dias.
Calculando a Diferença de Tempo em Segundos
Agora, vamos calcular quantos segundos faltam para o seu aniversário.
Para calcular a diferença total em segundos, utilize o método `total_seconds()` no objeto `timedelta` `time_diff`:
tsecs = time_diff.total_seconds()
print(f"Seu aniversário está a {tsecs} segundos de distância.")
# Saída
Seu aniversário está a 19017960.127416 segundos de distância.
Isso é bastante tempo de espera!
Agora, você já sabe como calcular a diferença de tempo entre dois timestamps em segundos.
Vamos relembrar alguns conceitos básicos: um dia possui 24 horas, uma hora possui 60 minutos e um minuto possui 60 segundos.
Essa relação está representada na imagem abaixo:
Horas, Minutos e Segundos
Portanto, para converter segundos em minutos, horas e dias, podemos usar a tabela a seguir e dividir pelo fator de conversão correspondente.

Tabela de Conversão de Tempo
Nas próximas seções, vamos converter a diferença horária de segundos para minutos e horas.
Calculando a Diferença de Tempo em Minutos
Para obter a diferença de tempo em minutos, basta dividir o total de segundos por 60.
Vamos dividir `tsecs` por 60 e armazenar o resultado em uma variável chamada `tmins`:
tmins = tsecs/60
print(f"Seu aniversário está a {tmins} minutos de distância.")
# Saída
Seu aniversário está a 316966.0021236 minutos de distância.
Calculando a Diferença de Tempo em Horas
Agora que calculamos a diferença de tempo em minutos, podemos dividi-la por 60 para obter a diferença em horas. Ou podemos dividir o total de segundos por 60*60 = 3600.
thrs = tsecs/(60*60)
print(f"Seu aniversário está a {thrs} horas de distância.")
# Saída
Seu aniversário está a 5282.76670206 horas de distância.
Agora, você já aprendeu a calcular a diferença de tempo em qualquer unidade de medida desejada.
Conclusão
Neste guia prático, você aprendeu como:
- Criar e manipular datas e horários utilizando o módulo datetime do Python;
- Utilizar objetos timedelta para obter intervalos de tempo ou diferenças temporais;
- Calcular a diferença temporal em segundos, minutos e horas.
Espero que este tutorial tenha sido útil. Agora que você domina o cálculo da diferença de tempo em Python, é hora de colocar seus conhecimentos em prática!
Bons estudos e boa codificação!
Explore outros tutoriais, como aprender a escrever código de igual ou não igualdade, ou criar um jogo de cobra em Python.