Como calcular a idade em Python (exemplos datetime e dateutil)
Aprenda como calcular a idade a partir da data de nascimento em Python. Inclui anos concluídos, idade em uma data específica e armadilhas comuns, como anos bissextos e fusos horários.
Como calcular a idade em Python (exemplos datetime e dateutil)
Se você precisa calcular a idade em Python a partir de uma data de nascimento, o principal a acertar é a definição de idade: a maioria dos aplicativos precisa de anos completos (aniversários completos), não apenas a diferença entre os anos.
1) Anos concluídos (a definição segura)
Isso retorna o número de anos completos desde a data de nascimento (DOB). Subtrai 1 se o aniversário ainda não aconteceu no ano atual.
da data e hora da importação
def idade_anos(dob: data, as_of: data | Nenhum = Nenhum) -> int:
se as_of for Nenhum:
as_of = data.hoje()
anos = as_of.year - dob.year
antes_do_aniversário = (como_do.mês, como_do.dia) <(dob.mês, dob.dia)
retornar anos - 1 se antes_aniversário senão anos
imprimir(idade_anos(data(2000, 10, 5), data(2026, 2, 26)))
2) Idade em uma data específica (não apenas hoje)
Muitos casos de uso precisam de uma data "a partir de": preços de seguros, verificações de elegibilidade, interrupções escolares, relatórios. A função acima já oferece suporte via as_of.
3) Estilo exato de saída (anos e meses)
Se você quiser uma saída como "25 anos 4 meses", use dateutil.relativedelta (ele lida com a duração dos meses corretamente).
da data de importação datahora
de dateutil.relativedelta importar relativodelta
def idade_ym(dob: data, as_of: data | Nenhum = Nenhum):
se as_of for Nenhum:
as_of = data.hoje()
rd = relativodelta(as_of, dob)
retornar rd.anos, rd.meses
imprimir(idade_ano(data(2000, 10, 5), data(2026, 2, 26)))
4) Armadilhas comuns (e como evitá-las)
- Aniversários em dias bissextos: decida como deseja tratar o dia 29 de fevereiro em anos não bissextos. Muitos sistemas usam 28 de fevereiro ou 1º de março. O comportamento da biblioteca é importante, então teste-o.
- Datas e fusos horários: para DOB, prefira
dataem vez dedatahora. Se você precisar usar data e hora, normalize primeiro para o mesmo fuso horário. - DOB futuro ou valores ausentes: valide entradas para evitar idades negativas ou falhas.
Verificação rápida (sem código)
Se você precisa apenas de um resultado rápido, use a calculadora online: Calcule a idade online.
Guias relacionados
- Como calcular a idade (guia completo)
- Como calcular a idade no Excel
- Como calcular a idade em JavaScript
Perguntas frequentes
Por que (hoje.ano - dob.ano) às vezes está errado?
Porque ignora se o aniversário já aconteceu este ano. Você deve subtrair 1 antes do aniversário.
Devo usar datahora ou data como data de nascimento?
Use data quando possível. DOB é um dia corrido e os fusos horários podem mudar a data e a hora entre os dias.