As datas são simples apenas até que não sejam, e é por isso RFC 3339 existe para definir o que significa um carimbo de data/hora na Internet.
O primeiro bug de idade que enviei estava em um formulário de inscrição A regra era simples o suficiente no papel: os usuários tinham que ter pelo menos 18 A implementação foi a que todo mundo escreve na primeira passagem - pegue a diferença entre dois carimbos de data/hora, divida por 365,25 dias, piso-a Funcionou em testes porque os acessórios de teste eram aniversários da década de 1980, confortavelmente longe do limite Ele falhou na produção para um usuário nascido em 29 de fevereiro, que foi informado de que tinha dezessete anos na manhã de seu décimo oitavo aniversário Ele não estava, compreensivelmente, encantado.
Essa é a coisa sobre a idade Todo mundo sabe o que significa, ninguém concorda em como computá-lo, e a versão ingênua está errada de maneiras que só surgem em limites - dias bissextos, mês termina, um dia antes de um aniversário Um ano não é 365 dias Um mês não é 30 dias. " Um mês após 31 January" não tem uma única resposta correta, e a resposta que você escolher altera o resultadoNada disso importa até que isso aconteça: até que você esteja verificando a elegibilidade, preenchendo um formulário que deseja " anos e meses, " calculando uma data de pensão, ou explicando a um usuário por que seu formulário pensa que ele tem dezessete anos.
Eu construo ferramentas de desenvolvedor para viver - [Toolz.dev] (/, o plugin WP Adminify, uma pilha de aplicativos Laravel e React - e aritmética de data é a categoria de bug que aprendi a parar de fazer manualmente calculadora de idade em Toolz.dev leva uma data de nascimento e uma data-alvo e dá-lhe a idade exata como anos, meses e dias, computado com aritmética de calendário real, em vez de uma aproximação média-mês Ele também dá-lhe os totais de pessoas realmente pedir - quantos dias, semanas, horas - mais o dia da semana em que você nasceu e uma contagem regressiva para o seu próximo aniversário.
Este guia explica o que a ferramenta faz, como a aritmética funciona por baixo e onde estão os casos genuinamente difíceis. Se você deseja apenas o número, a calculadora está a um clique de distância. Se você já teve que defender um cálculo de idade para um oficial de conformidade, leia The Deep Dive.
tl;dr: A idade exata é anos, depois meses, depois dias, com dias emprestados da duração real do mês anterior - não de uma média de 30 dias Os dias bissextos são contados Um aniversário de 29 de fevereiro é tratado como 1 de março em anos não bissextos calculadora de idade Aplica todo esse in-browser, mostra os totais em dias, semanas, horas e minutos e nunca envia sua data de nascimento em nenhum lugar.
Principais características
Anos, meses e dias corretos do calendário
O número do título é uma repartição exacta: 33 anos, 11 meses, 28 dias Não & quot;33.97 anos, & quot; não o & quot;407 meses, & quot; mas o valor de três partes que os formulários e os registradores pedem A componente de dias é computada por empréstimo a partir da duração real do mês antes da data prevista Se você estiver medindo em 14 de março, o empréstimo vem de fevereiro - 28 dias na maioria dos anos, 29 em um ano bissexto - não de um mês nocional de 30 dias Esse único detalhe é a diferença entre um resultado que corresponde ao calendário e um que deriva por um dia ou dois, dependendo da estação.
Ano bissexto e manuseio de 29 de fevereiro
Os dias bissextos são contados em todos os totais, e o caso de aniversário de 29 de fevereiro é tratado explicitamente e não ao acaso. A calculadora trata um aniversário bissexto como caindo em 1º de março em anos que não têm 29 de fevereiro, e diz isso na saída, em vez de tomar uma decisão silenciosamente em seu nome. Esta é a convenção que a maioria das jurisdições de direito comum usa, e é aplicada de forma consistente tanto à divisão de idade quanto à contagem regressiva do próximo aniversário, para que os dois nunca se contradigam.
Detalhamento total dos totais
Sob o título você obtém os números que as pessoas realmente procuram: total de meses, total de semanas, total de dias, total de horas e total de minutos vividos Cada um deles é derivado da distância exata do calendário entre as duas datas, portanto, os dias bissextos estão incluídos e nada é arredondado através de um & quot; média do ano e quot; de 365,25 dias. Se você nasceu em 1o de janeiro de 2000, você tinha 9.132 dias em 1o de janeiro de 2025 - vinte e cinco anos de 365 dias mais os sete dias bissextos intermediários.
contagem regressiva do próximo aniversário
A ferramenta informa a data do seu próximo aniversário, o dia da semana em que cai, a idade em que você vai completar e quantos dias restam. O dia da semana é mais importante do que parece: saber que um aniversário chega em uma terça-feira, dois anos depois, é a diferença entre planejar algo e descobrir o problema na semana anterior. Se a data-alvo é o aniversário em si, a ferramenta o diz em vez de avançar um ano inteiro.
Idade em qualquer data, não apenas hoje
O segundo campo é o padrão hoje, mas é totalmente editável. Defina-o para uma data anterior para responder "Qual a idade dela quando a apólice começou" ou para uma data futura para responder "será que ele terá dezesseis anos pelo corte de matrículas." As regras de elegibilidade são quase sempre expressas como uma idade em uma data específica, e fazer essa aritmética em sua cabeça é exatamente onde os erros se manifestam.
Validação clara, respostas erradas não silenciosas
Uma data incomparável, uma data impossível como 30 de fevereiro, um mês de 13 ou uma data de nascimento após a data-alvo, produzem uma mensagem de erro específica. A calculadora não retorna uma idade negativa, um Invalid Date, ou um NaN. Ser informado exatamente sobre o que há de errado com a entrada vale mais do que um número em que você não pode confiar.
100% do lado do cliente
Cada cálculo é executado em seu navegador em JavaScript simples. Sua data de nascimento nunca é carregada, registrada ou armazenada. Isso importa mais para essa ferramenta do que para a maioria: uma data de nascimento é uma das três ou quatro áreas que os sistemas de verificação de identidade se conectam e colá-lo em uma calculadora do lado do servidor cuja política de privacidade você não leu é um risco pequeno e evitável. Depois que a página é carregada, a ferramenta funciona sem nenhuma conexão de rede.
Como usar a calculadora de idade
Passo 1: Insira a data de nascimento
Digite ou escolha a data no primeiro campo Qualquer data do calendário funciona - incluindo 29 de fevereiro, e incluindo datas bem mais de um século atrás O campo leva um ISO YYYY-MM-DD Valor, que é o que o selecionador de datas nativos produz, para que você possa digitá-lo diretamente ou usar o seletor. Se você colar algo que a calculadora não pode analisar, ele informa o formato esperado em vez de adivinhar.
Passo 2: Defina a data que você está medindo para
O segundo campo, o & quot; Age at date, & quot; predefinido para hoje Deixe em paz para o caso comum: quantos anos tenho neste momento Altere - o quando a questão for sobre um momento diferente - o dia em que um contrato é assinado, um ponto de corte de exame, o início de um ano letivo, uma data de reforma ou uma data no passado que está a reconstruir para um registo A única restrição é que deve cair na data de nascimento ou após esta; a calculadora rejeita o inverso e explica porquê.
Passo 3: Leia o detalhamento
Pressione Calcular e o resultado aparece em três partes No topo, a idade exata como anos, meses e dias, com as duas datas entre as quais foi computado Abaixo disso, dois cartões: o dia da semana em que você nasceu, e seu próximo aniversário com sua data, seu dia da semana, a idade que você vai virar, e os dias restantes Na parte inferior, a tabela de totais - meses, semanas, dias, horas e minutos - cada um com uma pequena nota explicando exatamente o que conta, porque o & quot; total de meses" e o " total de dias" são contados de forma diferente e vale a pena ser explícito.
Etapa 4: copie o resumo
O botão copiar coloca um resumo em inglês simples em sua área de transferência: a idade, a data prevista, o dia da semana de nascimento e o total de dias É o formato que você deseja quando estiver colando em um formulário, um e-mail, um ticket de suporte ou um registro. Em seguida, altere qualquer uma das datas e calcule novamente - não há estado para redefinir e não há viagem de ida e volta a um servidor.
The Technical Deep Dive: Por que a aritmética de idade é mais difícil do que parece
Um ano não é 365 dias e um mês não é 30
O ano gregoriano tem 365,2425 dias de duração em média É por isso que inserimos um dia bissexto em anos divisíveis por 4, pulamos em anos divisíveis por 100 e o restabelecemos em anos divisíveis por 400 - e é por isso que 2000 foi um ano bissexto e 1900 não foi A consequência para a aritmética da idade é direta: se você calcular a idade dividindo os dias decorridos por 365, você ganha aproximadamente um dia a cada quatro anos, e seu cálculo discordará do calendário para qualquer pessoa medido perto de seu aniversário Dividir por 365,25 é melhor e ainda errado, porque ele deriva o outro caminho através das fronteiras do século.
O problema do mês é pior, porque os meses não são meramente irregulares - são ambíguos Os meses são 28, 29, 30, ou 31 dias Não existe uma média defensável Qualquer cálculo que trate o & quot; um mês & quot; como um número fixo de dias produzirá uma idade que discorda do que um humano contando com um calendário diria.
O algoritmo de subtração de campo
A abordagem correta não é converter em dias. É para subtrair campo por campo, emprestando quando um campo fica negativo, exatamente como você subtrai dois números de vários dígitos manualmente.
Pegue uma data de nascimento de 15 de março de 1990 e uma meta de 14 de março de 2024:
- Anos: 2024 – 1990 = 34
- Meses: 3 − 3 = 0
- Dias: 14− 15 = −1
O campo de dias é negativo, então peça emprestado um mês. A questão-chave é: Um mês de quantos dias? A resposta é a duração do mês imediatamente anterior à data-alvo. A meta é em março de 2024, portanto, o mês anterior é fevereiro de 2024, que tem 29 dias porque 2024 é um ano bissexto. Emprestar dá:
- Meses: 0 − 1 = −1
- Dias: -1 + 29 = 28
Agora, o campo dos meses é negativo, então peça um ano: anos 34 − 1 = 33, meses −1 + 12 = 11. A resposta final é 33 anos, 11 meses, 28 dias - um dia antes do 34o aniversário, o que é exatamente certo.
Você pode verificar o contrário: 15 de março de 1990 mais 33 anos é 15 de março de 2023. Além de 11 meses, é 15 de fevereiro de 2024. De 15 de fevereiro a 14 de março de 2024 é de 14 dias até o final de fevereiro (que tem 29 dias naquele ano) mais 14 dias em março, que é 28. Os dois métodos concordam, que é a propriedade que você deseja de um algoritmo de data.
Observe a armadilha que isso expõe Se o mesmo cálculo ocorreu em um ano não bissexto - 15 de março de 1990 a 14 de março de 2023 - o empréstimo viria de um mês de fevereiro de 28 dias e a resposta seria 33 anos, 11 meses, 27 dias. A mesma relação com o aniversário, contagem de dias diferentes, porque o mês intermediário tem uma duração diferente. Isso não é um bug. Isso significa que "meses e dias" significa.
Por que um empréstimo às vezes não é suficiente
Aqui está o caso que quebra a maioria das implementações roladas à mão. Data de nascimento 31 de janeiro de 2023, meta 1 de março de 2023:
- Dias: 1 − 31 = −30
- Pedido de fevereiro (28 dias): -30 + 28 = −2
Ainda negativo. Um único empréstimo é insuficiente sempre que o dia do mês de nascimento exceder a duração do mês anterior à meta A solução é pedir emprestado novamente, a partir do mês anterior - janeiro, 31 dias - dando 29 dias e zero meses A resposta é 0 anos, 0 meses, 29 dias, que é precisamente o número de dias corridos entre as duas datas. Se a sua implementação pedir emprestado exatamente uma vez, emitirá um campo de dias negativos para esses insumos e ninguém notará até que um usuário nascido no dia 31 reclame.
Por que "um mês depois" não tem uma resposta correta
O que é um mês após 31 de janeiro? Existem duas respostas defensáveis e os padrões não resolvem:
- Aperto: roll back to the last valid day of the target month - 28 February (ou 29 em um ano bissexto).Isso é o que mais planilha
EDATEFunções e muitas bibliotecas de datas. - rolando para a frente: transborde para o próximo mês - 3 de março. Isso é que ingênuo
setMonth()A aritmética funciona em JavaScript, e é por isso que tantos bugs de data parecem erros off-a-de-três dias.
Nenhum dos dois está errado, mas ambos não podem ser usados no mesmo sistema. A calculadora de idade aplica a convenção de rolagem em frente de forma consistente, porque é a convenção que torna a regra de 29 de fevereiro coerente: se um aniversário mensal do 29º rolo em 1º de março, um aniversário mensal do 31º também chegará no próximo mês. O algoritmo de empréstimo acima produz exatamente esse comportamento sem nenhum invólucro especial, que é uma das razões para preferi-lo. Uma única regra, aplicada em todos os lugares, supera uma pilha de exceções.
O problema de 29 de fevereiro
Aproximadamente uma pessoa em 1.461 nasce em um dia bissexto. Em três anos em cada quatro anos, o aniversário deles não existe. As jurisdições tiveram que decidir o que fazer e nem todas decidiram a mesma coisa.
De acordo com a regra do direito comum usada na Inglaterra e na maioria dos estados americanos, uma pessoa atinge uma determinada idade no início do dia antes o aniversário de seu nascimento - uma ficção que faz ordenadamente um bebê de dia bissexto' s aniversário legal cair em 1 de março em um ano não bissexto Vários outros sistemas chegar a mesma resposta por uma rota diferente, sustentando que o aniversário é o dia seguinte ao último dia de fevereiro Nova Zelândia e partes de Taiwan, por outro lado, usar 28 de fevereiro Hong Kong & #39; s Interpretação e Cláusulas Gerais Portaria e vários outros estatutos explicitamente escolher um e anotá-lo, que é a coisa sensata a fazer.
A calculadora de idade usa 1 de março, afirma isso na saída quando se aplica e o aplica de forma consistente tanto à divisão de idade quanto à contagem regressiva do próximo aniversário. Portanto, alguém nascido em 29 de fevereiro de 2000 tem 22 anos, 11 meses e 30 dias em 28 de fevereiro de 2023 e completa 23 anos em 1 de março de 2023. Se sua regra local for 28 de fevereiro, subtraia um dia da contagem regressiva; os números do total de dias não são afetados de qualquer maneira, porque são pura distância do calendário.
Como diferentes sistemas reconhecem a idade
Tudo acima pressupõe a idade cronológica contada desde o momento do nascimento - o padrão internacional, e o que quase todo sistema legal e médico agora usa Não é o único sistema que existiu.
O cálculo tradicional da idade do Leste Asiático contava um recém-nascido como um ano de idade ao nascer e acrescentava um ano a todos no ano novo lunar, em vez de aniversários individuais. Um bebê nascido um dia antes do ano novo seria considerado com dois anos de idade dois dias depois. A Coreia manteve a prática na vida cotidiana por mais tempo - ao lado de um "calendar age" usado para escolaridade e recrutamento - até junho de 2023, quando foi legalmente padronizado na idade internacional e, no relato do dia, tornou toda a população um ou dois anos mais jovem da noite para o dia. A China, o Japão e o Vietname tinham passado para a idade internacional décadas antes, embora a contagem tradicional sobreviva em contextos culturais e astrológicos.
Vale a pena conhecer dois outros acertos de contas porque aparecem em documentos reais. idade gestacional, usado em obstetrícia, é contado desde o primeiro dia do último período menstrual, não concepção, e ocorre cerca de duas semanas antes da idade embrionária. e Idade no último aniversário contra Aniversário mais próximo É uma distinção ao vivo na subscrição de seguros: algumas apólices custam a idade que você mais recentemente, outras na idade de sua mais próxima, que podem diferir por um ano inteiro para qualquer pessoa com mais de seis meses após o aniversário. Se um formulário solicitar sua idade e a resposta for financeiramente importante, vale a pena saber qual é o seu significado.
Zones de tempo e por que essa ferramenta os ignora
Uma data de nascimento é uma data de calendário, não um instante Se você armazená-lo como um carimbo de data/hora e renderizá-lo em um fuso horário diferente, ele pode mudar por um dia - o bug clássico onde um aniversário é exibido como o dia 14 para usuários em um hemisfério e o dia 15 no outro A Calculadora de Idade contorna isso inteiramente fazendo toda a aritmética em UTC em datas ancoradas à meia-noite As transições que economizam luz do dia, que adicionam ou removem uma hora, não podem empurrar uma data através de um limite de meia-noite, e a figura do dia-de-nascimento da semana é estável, não importa onde você esteja sentado Os totais de horas e minutos são contados da meia-noite à meia-noite pelo mesmo motivo: são múltiplos exatos da contagem de dias, não medições de relógio de parede.
Casos de uso comuns
Datas de corte de elegibilidade e destinação
Quase todas as regras que envolvem a idade são expressas como uma idade em uma data específica. Cortes de matrícula escolar, elegibilidade de carteira de motorista, vendas com restrição de idade, qualificação previdenciária, faixas de seguros, idades mínimas em termos de serviço. A questão nunca é "quantos anos essa pessoa" tem, mas "quantos anos essa pessoa estará na data relevante" e o campo de destino editável é o ponto principal. Defina a data para o corte e leia a figura dos anos.
Formulários que desejam anos e meses
Pedidos de imigração, formulários de admissão médica, registros escolares e documentação de residência rotineiramente pedem idade em anos e meses, ou anos, meses e dias Não há atalho para isso e nenhuma maneira de derivá-lo de uma idade decimal Tem que ser computado adequadamente, e tem que corresponder a tudo o que o escritório receptor calcula, e é por isso que o método de empréstimo de calendário importa - é o que a pessoa do outro lado do formulário está fazendo.
Construindo a lógica de idade em um aplicativo
Se você estiver implementando uma verificação de idade, a regra é: nunca divida milissegundos decorridos por uma constante de ano Compare os campos do calendário A verificação mínima correta de mais de 18 anos é construir a data exatamente dezoito anos após a data de nascimento e testar se hoje está ligado ou depois dela - e então decidir, deliberadamente, o que seu sistema faz com 29 de fevereiro Eu uso o calculadora de idade Para gerar os limites do limite quando escrevo esses testes: um dia antes do aniversário, no dia do caso bissexto, no caso do 31º mês. Quatro casos de teste capturam essencialmente todos os bugs de idade que chegam à produção.
Marcos, aniversários e a pergunta "quantos dias"
Dez mil dias de idade é um marco real que cai em algum lugar por volta do seu vigésimo sétimo aniversário. Bilhões de segundos de aniversário chegam a aproximadamente 31,7 anos. A tabela de totais responde diretamente a eles, e a figura do dia de nascimento responde à outra pergunta que as pessoas sempre fazem. A contagem regressiva do próximo aniversário, com seus dias de semana, é genuinamente útil para planejar qualquer coisa mais do que algumas semanas fora.
Reconstruindo registros
Quando você está auditando dados históricos - um registro médico, uma entrada de folha de pagamento, um contrato antigo - muitas vezes você precisa saber quantos anos alguém tinha em um encontro anos no passado Defina ambos os campos explicitamente e a ferramenta responde sem quaisquer suposições sobre o & quot; agora." esta também é a maneira mais rápida de verificar se um sistema legado' s campo de idade armazenado estava certo, o que, na minha experiência, é uma pergunta que vale a pena fazer.
Por que calcular a idade no navegador?
Todos os cálculos no Toolz.dev calculadora de idade executa o lado do cliente Nada do que você digita é transmitido, registrado ou armazenado, e a página continua funcionando sem conexão de rede depois de ter carregado Uma data de nascimento não é um dado neutro - é um dos campos em que verificações de identidade, redefinições de senha e aplicativos de crédito se conectam Não há razão para entregá-lo a um servidor apenas para fazer subtração que seu navegador pode fazer em menos de um milissegundo.
Se o seu trabalho envolve datas além dos aniversários, o Calculadora de diferença de datas Lida com o caso geral do intervalo e o conversor de carimbo de data/hora É a ferramenta para quando a data está retida dentro de um valor de época do Unix em um log. Para tudo numérico, o calculadora de porcentagem Abrange a outra metade da aritmética cotidiana que é fácil de errar sutilmente.
FAQ
Como calculo minha idade exata em anos, meses e dias?
Subtraia a data de nascimento do campo de data-alvo por campo: anos, depois meses e dias. Se o dia for negativo, peça emprestado o número de dias do mês anterior à data prevista; se o mês for negativo, peça emprestado 12 meses a partir dos anos. Insira sua data de nascimento na calculadora e aplica-se esse empréstimo automaticamente, de modo que o resultado corresponda a um calendário em vez de uma estimativa de um mês médio.
Por que o número de dias na minha idade muda dependendo do mês?
Porque os meses não têm o mesmo comprimento. Os dias de empréstimo de um mês de fevereiro de 28 dias fornecem um restante diferente do que pedir emprestado em janeiro de 31 dias, de modo que a mesma pessoa pode ter "3 meses e 2 dias" em um mês e "3 meses e 5 dias" em outro após o mesmo período decorrido. Os anos e dias totais são inequívocos; apenas os meses mais que o restante depende de quais meses você cruzou.
Como a calculadora lida com um aniversário de 29 de fevereiro?
Uma data de nascimento de 29 de fevereiro é tratada como uma queda em 1º de março em anos que não têm 29 de fevereiro. Portanto, alguém nascido em 29 de fevereiro de 2000 completa 23 anos em 1º de março de 2023 e, em 28 de fevereiro de 2023, ainda tem 22 anos, 11 meses e 30 dias. Isso corresponde à regra que a maioria das jurisdições de direito comum se aplica, onde o aniversário é no dia seguinte ao último dia de fevereiro.
Os anos bissextos estão incluídos no número total de dias?
Sim. Os dias totais são calculados a partir da distância real do calendário entre as duas datas, portanto, a cada 29 de fevereiro no intervalo é contabilizada. É por isso que os dias totais divididos por 365 não serão exatamente iguais à sua idade em anos - o ano gregoriano médio é de 365,2425 dias.
Posso calcular minha idade em uma data futura ou anterior?
Sim. O segundo campo de datas é o padrão hoje, mas pode ser definido como qualquer data após a data de nascimento. É assim que você verifica a idade em um ponto de corte - matrícula escolar, data de início da política, data de elegibilidade da licença ou assinatura de contrato - sem fazer a aritmética.
Minha idade é a mesma em todo o mundo?
Não necessariamente. A maioria dos países usa a idade cronológica contada desde o nascimento, que é o que essa calculadora retorna. A idade de cálculo tradicional do Leste Asiático contou um recém-nascido com um ano de idade e acrescentou um ano em cada Ano Novo Lunar, o que pode tornar alguém até dois anos "mais velho" do que sua idade cronológica. A Coreia do Sul padronizou legalmente na era internacional em junho de 2023, mas a contagem tradicional ainda aparece em contextos culturais.
Em que dia da semana eu nasci?
A calculadora informa diretamente o dia da semana da data de nascimento. Ele é derivado do calendário gregoriano, portanto, é preciso para qualquer data desde que o calendário foi adotado e não depende do fuso horário local porque toda aritmética é feita em UTC.
Minha data de nascimento é armazenada ou enviada para algum lugar?
não . A calculadora é executada inteiramente no seu navegador com JavaScript simples. Nada que você digita é transmitido, registrado ou armazenado, e a ferramenta continua a funcionar sem conexão com a Internet depois que a página for carregada.



