Como calcular idade exata em anos e meses
Muita gente usa calculadoras online ou planilhas prontas, mas o problema real é que a maioria delas não lida bem com datas de nascimento no final do mês. Você digita 15 de março de 2000 como data de nascimento e 10 de outubro de 2024 como data atual. A resposta que aparece pode estar errada por um mês dependendo da lógica usada. Isso acontece porque nem todo mês tem 30 dias, e algumas ferramentas simplificam demais o cálculo.
A lógica correta para idade em anos e meses
O procedimento básico é subtrair a data de nascimento da data de referência, levando em conta o empréstimo de meses quando necessário. Vamos ao passo a passo prático: Pegue a data atual. No meu caso, vou usar 10 de outubro de 2024 como exemplo. Depois pegue a data de nascimento: 15 de março de 2000.
Passo 1: Subtraia os anos. 2024 menos 2000 dá 24 anos. Mas isso ainda não é a resposta final porque o mês de aniversário ainda não foi considerado. Passo 2: Compare os meses. Outubro (10) é maior que março (3), então o aniversário já passou neste ano. A idade em anos permanece 24.
Passo 3: Subtraia os meses. 10 menos 3 dá 7 meses. Resultado: 24 anos e 7 meses. Agora vamos complicar. Digamos que a data de referência seja 5 de fevereiro de 2025. O mês 2 é menor que o mês 3 do nascimento. Aqui entra o empréstimo. Você pega 1 ano emprestado do total de anos, transforma em 12 meses, e soma ao mês atual. 2 mais 12 é 14. 14 menos 3 dá 11 meses. E os anos? 25 menos 1 (o empréstimo) menos 2000 dá 24 anos. Resultado: 24 anos e 11 meses.
Um problema que eu encontrei na prática
Eu precisava calcular idade em anos e meses para um relatório de benefícios previdenciários onde havia milhares de nascimentos em 31 de janeiro, 30 de fevereiro (sim, isso existe em alguns registros de dados estrangeiros) e 29 de fevereiro em anos bissextos. A maioria das ferramentas que testei retornava valores incorretos para pessoas nascidas em 29 de fevereiro quando a data de referência era um ano não bissexto. A lógica padrão simplesmente não sabia como tratar o dia 29 de fevereiro de 1988 calculando até 15 de março de 2023. A solução que eu adotei foi tratar datas de 29 de fevereiro como 28 de fevereiro exclusivamente quando o ano de referência não era bissexto. Em Python, usei esta abordagem:
👉 Clique no botão abaixo para saber mais sobre o assunto!
Se o mês de nascimento for fevereiro e o dia for 29, e o ano de referência não for bissexto, ajustar o dia de nascimento para 28 antes de calcular. Isso evita que a subtração de datas quebre ou gere resultados negativos.
Dicas que ninguém conta
A primeira coisa que todo iniciante esquece é que idade não se calcula apenas por diferença de datas. A diferença bruta entre duas datas em dias dividida por 30 dá uma aproximação, mas emcontexts formais — processos judiciais, cadastros médicos, relatórios financeiros — isso não passa de palpite. Ferramentas que usam 30 dias como padrão mensal distorcem o resultado em cerca de 2 a 4 meses por ano em média. A segunda coisa: muitos sistemas de planilha têm funções prontas, como DATEDIF no Excel, que calculam anos, meses ou dias separadamente. O problema é que a função DATEDIF é documentada internamente pela Microsoft mas nunca foi oficialmente documentada em nenhuma versão do Excel. Ela funciona, mas se você não souber usar corretamente, pode pegar o parâmetro errado e receber meses calculados de forma truncada em vez de completa. O parâmetro "YM" retorna apenas os meses restantes após os anos completos, e é exatamente o que você precisa para montar a idade em anos e meses.
Limitações que valem a pena saber
O cálculo manual funciona bem para datas cotidianas, mas começa a falhar em cenários específicos. Primeiro, fusos horários. Se a pessoa nasceu às 23h59 em Tóquio e você está calculando a partir de São Paulo no mesmo instante civil, a data pode ser diferente nos dois lugares. Segundo, calendários diferentes. Registros históricos que usam calendário juliano versus gregoriano geram discrepâncias de dias que comprometem o cálculo. Para a grande maioria dos casos do dia a dia, usar bibliotecas de data nativas de linguagens modernas como Python, JavaScript ou PHP resolve o problema com segurança. Se você estiver em Excel, DATEDIF com os parâmetros "Y" e "YM" é suficiente. A combinação dos dois parâmetros dá a idade exata em anos e meses sem precisar escrever uma função personalizada.
Um exemplo rápido para testar
Data de nascimento: 22 de julho de 1992. Data de referência: 8 de abril de 2025. Anos: 2025 menos 1992 é 33, mas o mês 4 é menor que 7, então o aniversário ainda não aconteceu. Age em anos = 32. Meses: 4 mais 12 é 16, 16 menos 7 é 9 meses. Resultado final: 32 anos e 9 meses.
Esse tipo de cálculo aparece em formulários de cadastro, sistemas de saúde e relatórios de RH. Não complicar demais resolve na maior parte das vezes.