# Calcular idade

> Esta calculadora mostra a idade a partir da data de nascimento: em anos completos e de forma exata, em anos, meses e dias. Ela também conta os dias vividos e quanto falta para o próximo aniversário, com o dia da semana em que ele cai. Dá para calcular a idade em qualquer data, não só hoje, como na data de uma inscrição ou de um contrato.

- Endereço oficial: https://pradev.com.br/calcular-idade
- Categoria: Data e hora
- Tipo: Calculadora
- Atualizado em: 2026-10-01
- Autor: Leonardo Gaertner (https://pradev.com.br/sobre)
- Preço: grátis, sem cadastro. O processamento acontece no navegador de quem usa.

## Como usar

1. Informe a data de nascimento.
2. Deixe a data de hoje ou escolha outra data em "Idade em".
3. Leia a idade, a idade exata e os dias até o próximo aniversário.

## Como funciona

A idade em anos é o número de aniversários completos até a data escolhida: quem nasceu em 2 de outubro de 1990 tem 35 anos em 1º de outubro de 2026 e faz 36 no dia seguinte. A idade exata soma os meses e dias desde o último aniversário, contando meses de calendário.

Quem nasceu em 29 de fevereiro tem aniversário só nos anos bissextos. Nos outros anos, a calculadora considera 28 de fevereiro, a mesma convenção das planilhas. Para fins legais, como a maioridade, há o entendimento de que vale 1º de março, pelo artigo 132 do Código Civil.

### Exemplo

```text
Nascimento: 02/10/1990
Idade em 01/10/2026: 35 anos (35 anos, 11 meses e 29 dias)
Próximo aniversário: amanhã, 36 anos
```

## Em código

Para calcular a idade em código, subtraia os anos e tire 1 se o aniversário ainda não chegou naquele ano. Dividir os dias vividos por 365 erra perto do aniversário.

```javascript
// Idade em anos completos na data de referência (padrão: hoje), com datas no formato AAAA-MM-DD.
function calcularIdade(nascimento, referencia = new Date().toISOString().slice(0, 10)) {
  const [an, mn, dn] = nascimento.split('-').map(Number);
  const [ar, mr, dr] = referencia.split('-').map(Number);
  let idade = ar - an;
  // Ainda não fez aniversário neste ano? Tira 1.
  // Nesta conta, quem nasceu em 29/02 faz aniversário em 1º/03 nos anos não bissextos.
  if (mr < mn || (mr === mn && dr < dn)) idade--;
  return idade;
}

console.log(calcularIdade('1990-10-02', '2026-10-01')); // 35
console.log(calcularIdade('1990-10-02', '2026-10-02')); // 36
```

_JavaScript_

```python
from datetime import date


def calcular_idade(nascimento: date, referencia: date | None = None) -> int:
    """Idade em anos completos na data de referência (padrão: hoje)."""
    referencia = referencia or date.today()
    # Ainda não fez aniversário neste ano? A comparação de tuplas resolve: (mês, dia).
    # Nesta conta, quem nasceu em 29/02 faz aniversário em 1º/03 nos anos não bissextos.
    ainda_nao = (referencia.month, referencia.day) < (nascimento.month, nascimento.day)
    return referencia.year - nascimento.year - ainda_nao


print(calcular_idade(date(1990, 10, 2), date(2026, 10, 1)))  # 35
print(calcular_idade(date(1990, 10, 2), date(2026, 10, 2)))  # 36
```

_Python_

```php
<?php
// Idade em anos completos na data de referência (padrão: hoje), com datas no formato AAAA-MM-DD.
function calcularIdade(string $nascimento, ?string $referencia = null): int
{
    $inicio = new DateTimeImmutable($nascimento);
    $fim = new DateTimeImmutable($referencia ?? 'today');
    // diff conta anos, meses e dias de calendário; y são os anos completos.
    // Nesta conta, quem nasceu em 29/02 faz aniversário em 1º/03 nos anos não bissextos.
    return $inicio->diff($fim)->y;
}

echo calcularIdade('1990-10-02', '2026-10-01'), PHP_EOL; // 35
echo calcularIdade('1990-10-02', '2026-10-02'), PHP_EOL; // 36
```

_PHP_

## Perguntas frequentes

### Como calcular a idade no Excel?

Use =DATADIF(A1;HOJE();"Y"), com a data de nascimento em A1. Para os meses desde o último aniversário, use =DATADIF(A1;HOJE();"YM").

### Como calcular a idade em código sem errar?

Subtraia os anos e tire 1 se o aniversário daquele ano ainda não chegou. Dividir os dias vividos por 365 ou 365,25 erra perto do aniversário. A seção Em código, nesta página, mostra a função em JavaScript, Python e PHP.

### A data de nascimento fica salva?

Não. O cálculo é feito no seu navegador, e a data não é enviada a nenhum servidor nem guardada depois que você fecha a página.

## Fontes

- [Código Civil, art. 132: contagem de prazos em dias, meses e anos](https://www.planalto.gov.br/ccivil_03/leis/2002/l10406compilada.htm)

## Guias

- [Somar meses e calcular idade sem erro: o problema do dia 31](https://pradev.com.br/guias/somar-meses-e-calcular-idade-sem-erro): Por que 31 de janeiro mais 1 mês dá resultados diferentes em cada linguagem, como somar meses do jeito certo e como calcular a idade sem dividir por 365.

## Ferramentas relacionadas

- [Diferença entre Datas](https://pradev.com.br/diferenca-entre-datas): Calcule a diferença entre duas datas em anos, meses e dias, e o total em dias, semanas, meses e horas. Grátis, no navegador.
- [Contar Dias entre Datas](https://pradev.com.br/contar-dias-entre-datas): Conte os dias corridos e os dias úteis entre duas datas, descontando fins de semana e feriados nacionais. Opção de contagem inclusiva.
- [Somar Dias em Datas](https://pradev.com.br/somar-dias-em-datas): Some dias corridos, dias úteis, semanas, meses ou anos a uma data e veja o dia da semana do resultado. Pula fins de semana e feriados.
- [Gerador de Pessoas](https://pradev.com.br/gerador-de-pessoas): Gere pessoas fictícias com nome, CPF válido, nascimento, e-mail, celular e endereço para testar sistemas. Exporta JSON e CSV. Grátis, no navegador.
- [Dias Úteis e Feriados](https://pradev.com.br/dias-uteis-e-feriados): Veja os feriados nacionais e pontos facultativos do ano, com o dia da semana, e quantos dias úteis tem cada mês. De 1990 a 2200.
- [Converter Anos em Dias](https://pradev.com.br/converter-anos-em-dias): 1 ano tem 365 dias, ou 366 em ano bissexto. Converta qualquer valor de anos para dias, com decimais, e veja a tabela com os valores mais usados.
