Calculando a diferença entre duas datas com Python

Calculando a diferença entre duas datas com Python

Overview

Quer saber como calcular o período entre duas datas de um jeito simples e rápido usando Python? Neste post divertido, porém sério, eu vou te guiar através de cada passo necessário para obter a diferença entre duas datas, apresentando um método prático com o módulo datetime. Se você está curioso para descobrir como monitorar o tempo de execução de um serviço, vem comigo!

Neste post mostro como calcular a diferença entre duas datas (datetime) utilizando Python. Utilizo este método para calcular quanto tempo um serviço está sendo executado.

O formato da string com o resultado é nn days, hh:mm:ss.ms

O primeiro passo é importar os pacotes que vamos precisar:

from datetime import datetime

Agora vamos definir as datas que vamos utilizar na operação:

#Initial (oldest) date.
date_init = datetime.strptime("5-8-2000 13:45:10.345", '%d-%m-%Y %H:%M:%S.%f')

#Final (newest) date.
date_final = datetime(year=2018, month=1, day=30)

No fonte acima, criei as duas datas: inicial (date_init) e final (date_final). Para fins didáticos, criei as duas de formas diferentes.

A data inicial (date_init) foi criada utilizando a função strptime, que converte string para datetime, de acordo com o formato que você indicou no segundo argumento. Neste caso, informei uma data com dia, mes, ano (4 caracteres), horas, minutos, segundos e milisegundos.
Já para data final (date_final), criei um objeto datetime passando apenas o ano, mes e dia como argumento. Isso implica em dizer que esta variável não possuirá valores relativos a tempo (h:m:s.f).

O próximo passo é calcular a diferença entre as duas datas:

#Datetime with delta between the two other dates.
date_diff = date_final - date_init

Difícil, né? Então, agora basta converter para string e o valor sairá configurado.

#Printing a in a friendly way.
print("Uptime: %s" % str(date_diff))

Resultado:

>>> Uptime: 6386 days, 10:14:49.655000

Se quiser, este fonte está disponível no nosso Github!

Espero ter ajudado!