Trabalhando com datas em Python usando datetime
Perceu Bertoletti - 03/11/2026

Prazo de entrega, data de vencimento, idade de um cliente: datas aparecem em praticamente todo sistema. O Python já traz o módulo datetime para lidar com elas.

Data e hora atuais

from datetime import date, datetime

print(date.today())    # 2026-11-03
print(datetime.now())  # 2026-11-03 09:00:00.123456

Formatando para o padrão brasileiro

O método strftime transforma a data em texto:

agora = datetime.now()
print(agora.strftime("%d/%m/%Y %H:%M"))  # 03/11/2026 09:00

Os códigos mais usados: %d dia, %m mês, %Y ano, %H hora e %M minuto.

Convertendo texto em data

O caminho contrário é o strptime, muito usado ao ler dados de planilhas e formulários:

texto = "21/11/2026"
data = datetime.strptime(texto, "%d/%m/%Y").date()
print(data)  # 2026-11-21

Fazendo contas com timedelta

from datetime import timedelta

hoje = date(2026, 11, 3)

print(hoje + timedelta(days=30))  # 2026-12-03

evento = date(2026, 11, 21)
faltam = evento - hoje
print(f"Faltam {faltam.days} dias para o evento")  # Faltam 18 dias para o evento

Calculando a idade

def calcular_idade(nascimento: date, hoje: date) -> int:
    idade = hoje.year - nascimento.year
    if (hoje.month, hoje.day) < (nascimento.month, nascimento.day):
        idade -= 1
    return idade


print(calcular_idade(date(1995, 12, 10), date(2026, 11, 3)))  # 30

O truque é comparar as tuplas (mês, dia): se o aniversário ainda não chegou neste ano, desconta um.

Dica final

Guarde datas sempre como objetos date/datetime e só converta para texto na hora de mostrar. Comparar e ordenar strings como "03/11/2026" é receita para bug.

Sugira temas ou contribua no nosso repositório.