Calculadora de Idade — Idade Exata em Anos, Meses e Dias
Calculadora de idade grátis: insira sua data de nascimento para obter sua idade exata em anos, meses e dias, mais semanas totais, dias, horas e seu próximo aniversário.
Calculadora de Idade
Você nasceu em uma Monday
Próximo aniversário: 144 dias de distância (fazendo 37)
Sua idade em outras unidades
Progresso da vida
Sua idade em comparação com um intervalo de referência ilustrativo de 80 anos.
Documentação
O que esta calculadora faz
Digite sua data de nascimento e ela informa exatamente quantos anos você tem — em anos, meses e dias — da mesma forma que você diria em voz alta ("tenho 33 anos, 4 meses e 5 dias"). Também mostra essa mesma idade contada puramente em meses, semanas, dias, horas, minutos e segundos, o dia da semana em que você nasceu e quanto tempo falta para seu próximo aniversário.
Deixe o segundo campo na data de hoje para sua idade atual ou mude-o para qualquer data passada ou futura para encontrar sua idade naquela data.
A regra que torna as idades complicadas: meses e anos não têm um número fixo de dias. Fevereiro tem 28 ou 29; outros meses têm 30 ou 31. Então "1 mês" significa "o mesmo número do dia, um mês depois" — não "30 dias". Esta calculadora segue essa regra de calendário, razão pela qual pode diferir de um ou dois dias de ferramentas que apenas dividem por 30 ou 365.
Como sua idade é calculada
A idade é o intervalo entre duas datas. Existem duas maneiras honestas de medir esse intervalo, e esta ferramenta mostra ambas.
1. Idade do calendário (anos, meses, dias). Conte anos completos a partir de seu aniversário, depois meses completos, depois os dias restantes:
- Conte anos completos desde o nascimento.
- A partir do último aniversário, conte meses completos.
- De lá, conte os dias restantes.
A parte sutil é o passo 3 perto dos limites do mês. Alguém nascido em 31 de janeiro, medido em 1º de março, tem 1 mês e 1 dia — porque "um mês após 31 de janeiro" cai em 28/29 de fevereiro (não há 31 de fevereiro), e 1º de março é um dia após isso. Esta calculadora fixa no final do mês mais curto, correspondendo à regra dateutil.relativedelta amplamente utilizada, de modo que aniversários no final do mês nunca produzem uma contagem de dias negativa.
2. Tempo total decorrido (dias, horas, segundos). Para as figuras de "sua idade em outras unidades", as duas datas são convertidas em uma contagem de dias completos e multiplicadas:
Ambas as datas são fixadas em UTC meia-noite primeiro, então as mudanças de horário de verão não podem adicionar ou remover uma hora e causar problemas na contagem de dias. Semanas são dias ÷ 7 (arredondado para baixo); horas, minutos e segundos são o número de dias em escala.
Por que não apenas dividir dias por 365? Porque você teria desvios. Dividir 7.305 dias por 365 dá 20,01 anos; dividir por 365,25 dá 20,00 — mas nenhum dos dois sabe quais anos foram bissextos ou quais meses você realmente viveu. A contagem de calendário é exata; a divisão de dias é uma aproximação. Use a idade do calendário para "qual é minha idade" e dias/semanas totais para trabalho de tempo decorrido preciso (cronograma de medicamentos, durações de projetos, contagens regressivas de marcos).
Exemplo prático
Nascido em 1º de janeiro de 2000, medido em 1º de janeiro de 2020:
| Medida | Valor |
|---|---|
| Idade do calendário | 20 anos, 0 meses, 0 dias |
| Total de dias | 7.305 |
| Total de semanas | 1.043 |
| Dia da semana de nascimento | Sábado |
Os 7.305 dias = 20 × 365 + 5 dias bissextos (2000, 2004, 2008, 2012, 2016). Esse detalhe único — cinco dias extras que a maioria das pessoas esquece — é exatamente por que uma calculadora vence a matemática mental.
Idade no código
O mesmo cálculo em cada idioma. Para a idade do calendário, prefira uma biblioteca de data integrada em vez de aritmética feita à mão — ela já conhece anos bissextos e comprimentos de mês.
1' Whole days between two dates (A1 = birth, B1 = target):
2=B1-A1
3
4' Calendar age in complete years / months / leftover days:
5=DATEDIF(A1, B1, "y") & " years, " & DATEDIF(A1, B1, "ym") & " months, " & DATEDIF(A1, B1, "md") & " days"
61from dateutil.relativedelta import relativedelta
2from datetime import date
3
4birth, target = date(2000, 1, 1), date(2020, 1, 1)
5
6age = relativedelta(target, birth) # calendar age
7print(f"{age.years}y {age.months}m {age.days}d")
8
9total_days = (target - birth).days # total elapsed days
10print(total_days) # 7305
111function calendarAge(birth, target) {
2 let months = (target.getUTCFullYear() - birth.getUTCFullYear()) * 12
3 + (target.getUTCMonth() - birth.getUTCMonth());
4 const anchor = new Date(Date.UTC(birth.getUTCFullYear(), birth.getUTCMonth() + months, birth.getUTCDate()));
5 if (anchor > target) months--;
6 return { years: Math.floor(months / 12), months: months % 12 };
7}
8
9const birth = new Date(Date.UTC(2000, 0, 1));
10const target = new Date(Date.UTC(2020, 0, 1));
11const totalDays = Math.floor((target - birth) / 86400000); // 7305
121import java.time.LocalDate;
2import java.time.Period;
3import java.time.temporal.ChronoUnit;
4
5LocalDate birth = LocalDate.of(2000, 1, 1);
6LocalDate target = LocalDate.of(2020, 1, 1);
7
8Period age = Period.between(birth, target); // 20y 0m 0d
9long totalDays = ChronoUnit.DAYS.between(birth, target); // 7305
101using System;
2
3var birth = new DateTime(2000, 1, 1);
4var target = new DateTime(2020, 1, 1);
5
6int years = target.Year - birth.Year;
7if (birth.AddYears(years) > target) years--; // not birthday yet
8long totalDays = (target - birth).Days; // 7305
91#include <chrono>
2using namespace std::chrono;
3
4// C++20 calendar types
5sys_days birth = year{2000}/1/1;
6sys_days target = year{2020}/1/1;
7
8auto total_days = (target - birth).count(); // 7305
9years_months_days ymd_diff{birth, target}; // year_month_day arithmetic
101package main
2
3import "time"
4
5func main() {
6 birth := time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC)
7 target := time.Date(2020, 1, 1, 0, 0, 0, 0, time.UTC)
8 totalDays := int(target.Sub(birth).Hours() / 24) // 7305
9 _ = totalDays
10}
111use chrono::{NaiveDate, Datelike};
2
3let birth = NaiveDate::from_ymd_opt(2000, 1, 1).unwrap();
4let target = NaiveDate::from_ymd_opt(2020, 1, 1).unwrap();
5
6let total_days = (target - birth).num_days(); // 7305
7let years = target.year() - birth.year(); // adjust if birthday not reached
81<?php
2$birth = new DateTime('2000-01-01');
3$target = new DateTime('2020-01-01');
4$diff = $birth->diff($target);
5
6echo "{$diff->y}y {$diff->m}m {$diff->d}d\n"; // 20y 0m 0d
7echo $diff->days; // 7305
81require 'date'
2
3birth = Date.new(2000, 1, 1)
4target = Date.new(2020, 1, 1)
5
6total_days = (target - birth).to_i # 7305
7years = target.year - birth.year
8years -= 1 if birth.next_year(years) > target
91birth <- as.Date("2000-01-01")
2target <- as.Date("2020-01-01")
3
4total_days <- as.integer(target - birth) # 7305
5Perguntas comuns
Qual é exatamente minha idade? Digite sua data de nascimento e deixe o alvo em hoje. A calculadora mostra sua idade em anos, meses e dias e a repete em dias, semanas, horas e segundos totais.
Por que minha idade difere de outra calculadora? Quase sempre o resto do mês/dia. As ferramentas discordam sobre como contar os dias após o último mês inteiro nos limites do mês. Esta fixa no mês mais curto (a convenção relativedelta); uma ferramenta que divide por 30 diferirá de um ou dois dias.
Ele trata anos bissextos e aniversários em 29 de fevereiro? Sim. As contagens de dias incluem todos os dias bissextos no intervalo, e um aniversário em 29 de fevereiro é medido em 28 de fev / 1º de mar em anos não bissextos sem transbordamento.
Posso calcular a idade em uma data passada ou futura? Sim — defina o campo "Idade em data" para qualquer data. Uma data futura informa com quantos anos você será; uma data passada, com quantos anos você era.
E quanto a fusos horários? As datas são normalizadas para UTC antes da contagem, portanto, o total do dia completo é estável não importa onde você esteja ou se o horário de verão foi alterado.
Fontes
- Python
dateutil—relativedelta(a regra de mês/dia de idade do calendário que esta ferramenta segue). - Java Platform —
Period.betweeneChronoUnit.DAYS. - Microsoft Excel — função
DATEDIF. - MDN Web Docs —
Date. - Dershowitz, N., & Reingold, E. M. Calendrical Calculations: The Ultimate Edition. Cambridge University Press, 2018.