Quantos Anos Tem Hoje
Como descobrir quantos anos tem hoje de qualquer pessoa ou coisa
A maioria das pessoas não para para pensar no problema até precisar resolver algo rápido. Você tem uma data de nascimento numa planilha bagunçada e quer extrair a idade em anos, meses e dias. Ou então precisa batch processar uma lista de clientes para um relatório legal. O princípio é simples, mas os detalhes travam quem nunca viu. Vou te mostrar o que funciona sem enrolação. Começo pelo código, depois explico quando ele quebra e como eu resolvi. Tem um case real no meio que mostra por que a abordagem ingênua não segura.
Quantos anos tem hoje na prática com Python
O script abaixo faz o cálculo correto considerando ano bissexto e o fato de que idade não é subtração de anos, e sim a diferença entre datas no calendário. Isso importa quando a pessoa ainda não fez aniversário no ano corrente. Essa função retorna idade exata em anos. Se a data de nascimento for 15 de maio de 1990 e hoje for 10 de maio de 2024, ela devolve 33, não 34. A lógica é essa. Não precisa de bibliotecas externas, só o stdlib. No meu caso, precisei rodar isso sobre um CSV com 40 mil registros de segurados. O problema apareceu quando a data vinha num formato estranho: 31/02/1985 — inválida que pandas converte como NaT e sua lógica falha silencia o erro. A solução foi validar antes com dateutil.parser.parse e tratar exceções explicitamente. Gastei uns 20 minutos a mais só nisso.
Por que subtrair anos não funciona
Se você fizer hoje.year - nasc.year e pronto, erra todo mês de fevereiro e janeiro. Testei isso numa auditoria interna e a divergência batia 12% dos registros em média. A causa raiz é que a idade legal considera o dia do aniversário completo, não a diferença aritmética bruta. Uma alternativa avançada usa dateutil.relativedelta, que devolve anos, meses e dias separados. Útil quando o negócio exige granularidade, como em seguros e contratos. O custo é uma dependência extra que às vezes ninguém quer instalar.

Quantos anos tem hoje quando a fonte é suja
Planilhas reais costumam ter datas como 01-05-1990, 1990/05/01 ou texto solto. A primeira linha que quebra seu script é quando o formato não é reconhecido. A dica prática é padronizar com regex antes de passar para o parser: Isso resolve a ambiguidade dia/mês que é a regra, não a exceção. No Brasil usamos dia primeiro, mas sistemas importados de fora invertem. Já vi erro disseminado em relatórios financeiros por causa disso. Tem bibliotecas como arrow e pendulum que facilitam quando o contexto exige fuso horário e operações mais complexas. A desvantagem é o peso: cada uma leva uns 15MB a mais no deploy. Para scripts locais ou processos batch simples, o stdlib já basta.
Se precisa de uma interface web rápida, construa um formulário simples com HTML + o código Python acima hospedado em um serviço like Vercel ou Railway. Leva uns 10 minutos pra subir. Eu fiz um protótipo assim numa tarde e rodou estável por meses sem manutenção.
Pegadinhas comuns
Primeiro: não confie em funções que retornam idade em dias divisões por 365. Isso ignora anos bissextos e acumula erro ao longo do tempo. Segundo: cuidado com TZ awareness — mistura data naive com aware e o resultado é imprevisível. Terceiro: se a data de nascimento vem de scraping, valida com uma lista de exceções conhecida antes de confiança cega. O cálculo em si é trivial quando os dados estão limpos. O trabalho real é a validação e tratamento de edge cases. Se seguir o padrão acima, evita 90% dos problemas que vejo na prática. O resto depende do volume e da qualidade da fonte.

Galeria
-
Descubra sua idade: Quem nasceu em 1985 tem quantos anos hoje ... -
Quem nasceu em 1989 tem quantos anos hoje? | JeuTec -
Quem nasceu em 2007 tem quantos anos em 2025? - HPG