Voltar para o Blog
3 min read

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)

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 data em vez de datahora. 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

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.