Command Palette

Search for a command to run...

Calculadora de diferença de datas: conta os dias entre as datas sem erros de um lado a outro

Calculadora de diferença de datas: conta os dias entre as datas sem erros de um lado a outro

T
Toolz Team
|Jul 12, 2026|19 min ler

Parte da coleção Hora e data

Uma vez, devolvi a um cliente $9 por causa de um poste. O SaaS que eu estava construindo teve uma avaliação de 14 dias e meu código de rateio calculado "dias usados" como endDate - startDate em milissegundos, dividido por 86.400.000, arredondado Comece um teste às 23h do dia 1o, converta à 1h do dia 15, e a matemática dizia 14 dias - mas o cliente e o modelo mental no 39; disse " Inscrevi-me no 1o, aquele ' dia um, " o que faz o 15o dia quinze. O teste foi de 14 dias ou 14 noites? Meu código e minha página de preços discordaram entre si, e o cliente percebeu antes de mim.

Essa é a coisa sobre a aritmética de data: a subtração é trivial e o definição é onde tudo dá errado. contagem inclusiva ou exclusiva. Se "um mês" de 31 de janeiro é 28 de fevereiro, 2 de março ou 3 de março. Se um "dia" é 24 horas quando o horário de verão faz um dia do ano 23 horas e outro 25. Cada um deles me mordeu pelo menos uma vez, e eu venho enviando aplicativos Laravel e React há mais de uma década.

um Calculadora de diferença de datas existe para responder à pergunta precisamente para que você possa verificar suas suposições - e seu código - contra um resultado conhecido-correto O do Toolz.dev calcula a lacuna entre quaisquer duas datas em dias, semanas, meses e anos, inteiramente em seu navegador Eu uso constantemente: verificando períodos de fatura, verificando durações de contrato, estabelecendo & quot; quantos dias até o launch" debates no Slack com um link em vez de um argumento.

Este guia aborda como usá-lo e - mais útil - as cinco maneiras pelas quais a matemática data silenciosamente mentem para você, então você as reconhece em seu próprio código.

tl;dr: Escolha duas datas no Calculadora de diferenças de datas Toolz.dev e obtenha o intervalo exato em dias, semanas, meses e anos - instantâneo, gratuito, lado do cliente As três armadilhas para verificar todas as vezes: contagem inclusiva vs. exclusiva (a data final é contada?), aritmética de meses (meses têm 283 dias, então "1 mês depois" é ambíguo) e fusos horários (uma data sem fuso horário é um instante diferente em cada zona - converta carimbos de data/hora primeiro com o conversor de carimbo de data/hora). Para intervalos recorrentes em vez de lacunas pontuais, esse é um trabalho para o analisador de cron.


Principais características

Contagens de dias exatos (sem minas terrestres DST)

A saída fundamental: o número preciso de dias entre duas datas do calendário. o ingênuo (b - a) / 86400000 Você & #39; irá encontrar em mil bases de código JavaScript quebras sempre que uma transição de poupança de luz do dia fica entre as datas na hora local, produzindo resultados como 89.958333 dias que, em seguida, obter arredondado em qualquer direção está errado Esta calculadora contorna toda a classe de bug analisando ambas as datas como UTC antes que ele faz qualquer aritmética - UTC nunca salta para a frente ou cai para trás, então um dia há sempre exatamente 86.400.000 milissegundos e a contagem sai limpo A divisão anos/meses/dias, entretanto, é computado com matemática calendário real (avançar meses inteiros, em seguida, contar os dias restantes), não dividindo por um mês médio Quando o seu código diz 90 e a calculadora diz 89, acredite na calculadora e vá encontrar o limite DST em seus dados de tempo local.

Várias unidades de uma vez

A mesma lacuna expressa como dias, semanas, meses e anos - simultaneamente Isso é mais útil do que parece, porque diferentes domínios falam unidades diferentes: contratos legais falam em meses, negociações de planejamento de sprint em semanas, negociações de faturamento em dias, palestras de RH em anos de serviço A diferença entre 15 de março e 15 de setembro é de 184 dias, 26 semanas e 2 dias, ou exatamente 6 meses, e qual número você precisa depende inteiramente de quem & #39; s perguntando. Ter todos eles em uma visão significa que você para de fazer o "184 dividido por 7 é... 26 e mudar & quot; aritmética em sua cabeça, que é exatamente a aritmética que as pessoas erram.

Totais exclusivos mais dias úteis inclusivos

O problema do poste, tornado visível. A contagem de dias totais aqui é exclusivo- a diferença entre as datas - então de segunda a sexta-feira é 4. logo abaixo, a calculadora conta dias úteis (Segunda a Sexta, fins de semana excluídos) usando a convenção inclusiva que o Excel' s NETWORKDAYS usa, e também informa quantos dias de fim de semana ele caiu, então o mesmo período de segunda a sexta-feira é de 5 dias úteis Ver um total exclusivo e uma contagem inclusiva de dias úteis na mesma visualização é um pequeno lembrete diário de que o & quot; quantos dias & quot; tem duas respostas certas dependendo se você conta ambos os endpoints Meu reembolso de $ 9 aconteceu porque meu código respondeu à pergunta exclusiva enquanto minha página de preços perguntou a inclusiva - e uma ferramenta que mostra ambas as convenções de uma só vez é uma ferramenta que impede você de escolher uma por acidente.

Funciona ao longo de meses, anos bissextos e séculos

Fevereiro tem 28 dias exceto quando tem 29; 2024 foi um ano bissexto, 2100 won' t ser apesar de ser divisível por 4 (a regra do século gregoriano que pega todos) A calculadora acerta tudo isso porque usa regras reais do calendário em vez de & quot; um ano é 365,25 dias" aproximações Se você ' já precisou da contagem de dias para um intervalo de datas que abrange fevereiro em um ano bissexto - acumulação de juros, janelas SLA, cálculos de idade perto de um aniversário de 29 de fevereiro - você sabe que esses casos de borda são precisamente onde a matemática enrolada à mão falha.

Instantâneo, sem inscrição, sem upload

As datas entram, a resposta sai, inteiramente do lado do cliente Nada é transmitido ou armazenado Para a maioria das contas de data isso é conveniência e não segurança - mas nem sempre Datas de emprego, cronogramas médicos, prazos de litígio: pares de datas podem ser silenciosamente sensíveis, e lá & #39; não há razão para uma calculadora nunca vê-los do lado do servidor A ferramenta carrega rápido e funciona offline uma vez carregado, o que também torna a coisa que você alcança para o meio da reunião quando alguém pergunta & quot; espere, quanto tempo esse ticket está aberto? "


Como usar a calculadora de diferença de datas

Etapa 1: insira a data de início

abra o Calculadora de diferença de datas e defina a primeira data Use o selecionador, digite-o diretamente ou aperte o botão Hoje para encaixá-lo na data atual. Há & #39; s um campo de tempo opcional (HH: mm) se você precisar dos totais até a hora ou minuto em vez de meia-noite-meia-noite Se seus dados de origem forem um carimbo de data/hora Unix ou uma string ISO 8601 com um componente de tempo, resolva-o primeiro para uma data de calendário - e seja deliberado sobre o fuso horário, porque 1751846400 É 7 de julho em Tóquio e ainda 6 de julho em Los Angeles. o conversor de carimbo de data/hora Lida com essa tradução.

Etapa 2: insira a data final

Defina a segunda data O pedido não & #39; precisa preocupá-lo - uma diferença é uma magnitude, e aí & #39; s um botão de troca se você quiser inverter o início e o fim de qualquer maneira Vale um pensamento deliberado aqui: sua data de término é o último dia de o período ou o primeiro dia depois isso? Uma assinatura que termina em 31 de dezembro e uma que "renova em 1º de janeiro" descreve o mesmo período com datas finais diferentes, e essa é a fonte mais comum de discordâncias de um dia entre duas pessoas que calculam o intervalo "mesmo".

Passo 3: Leia a diferença na unidade de que precisa

O resultado mostra a lacuna entre as unidades Pegue aquela em que o seu problema está denominado, e resista à conversão entre elas à mão depois - & quot;6 months" e & quot;182.5 days" não são intercambiáveis, porque os meses são ' t um comprimento fixo Se a resposta for para um contrato, fatura ou SLA, indique a unidade e A Convenção de Contagem ("30 dias corridos, excluindo a data de início"), para que a próxima pessoa não reintroduza a ambiguidade que você acabou de resolver.

Etapa 4: verifique a sanidade em relação ao seu código

Se você estiver usando a calculadora para depurar um aplicativo, compare sua resposta com o que seu código produz para o mesmo par de datas. Uma incompatibilidade de exatamente um dia significa um problema de um posto ou limite de fuso horário. Uma incompatibilidade de um dia fracionário significa uma divisão de milissegundos em uma mudança de horário de horário físico. Uma incompatibilidade de dois ou três dias no final de um mês significa um transbordamento de um mês aritmético. o gross do erro é o diagnóstico - mais sobre cada um deles abaixo.


Mergulho Profundo Técnico: Por que a matemática da data dá errado

A aritmética de datas parece uma subtração e na verdade é uma pilha de regras de calendário, política de fuso horário e ambiguidade de definição. Cinco modos de falha são responsáveis por quase todos os bugs enviados ou revisados.

1. O problema do poste (fora por um). Entre o Dia 1 e o Dia 15, existem 14 intervalos, mas 15 dias se você contar as duas pontas. Nenhum dos números é "a diferença" até que você especifique a convenção. Noites de hotéis, juros de empréstimos e períodos de aluguel usam contagem exclusiva; prescrições, durações de eventos e "dias de cobertura" geralmente usados inclusivamente. O padrão de bug: uma parte de um sistema usa cada um. Anote a convenção.

2. Os meses não são uma unidade. O & quot;Um mês depois de 31 de Janeiro & quot; não tem resposta óbvia - 31 de Fevereiro does't exist. JavaScript' s legacy Date Lida com isso transbordando: new Date(2026, 0, 31) Além disso, um mês de terras em 3 de março (28 de fevereiro + 3 dias de overflow). strtotime('+1 month') faz o mesmo. A maioria dos humanos e a maioria dos sistemas de faturamento desejam clampe em vez disso: 31 de janeiro + 1 mês = 28 de fevereiro (ou 29).As bibliotecas diferem - data-fns e Carbon clamp por padrão em seus ajudantes de adição de mês, raw Date transbordamentos - e o novo API temporal Torna o comportamento uma opção explícita, que é o design correto. Se o seu aplicativo faz algo mensal com datas âncoras após o dia 28, esse é o bug que você tem, quer você o tenha encontrado ou não.

3. Um dia nem sempre é 24 horas. Em qualquer fuso horário que observe o horário de verão, um dia por ano dura 23 horas e outro dura 25. Código que calcula as diferenças do dia como milliseconds / 86_400_000 Produz um não inteiro sempre que o intervalo cruza uma transição, e o subsequente Math.round VS Math.floor a escolha decide se você & #39; está desligado por um A abordagem robusta é fazer aritmética de dia em datas de calendário, não em instantes - ou normalizar tudo para UTC, que não tem DST, antes de dividir.

4. Uma data sem fuso horário não é um momento. "2026-07-06" é uma largura de 24 horas alcance Isso começa e termina em diferentes instantes em cada fuso horário. A versão mais desagradável desse bug em JavaScript: new Date("2026-07-06") analisa como meia-noite utc De acordo com as especificações do ECMAScript, portanto, em qualquer fuso horário a oeste de Greenwich, ele será renderizado em 5 de julho. Perdi a maior parte da tarde para isso em um painel do React, onde data de um postgres DATE coluna exibida um dia antes para usuários dos EUA - a coluna estava bem, a API estava bem, o construtor era o bug Se você tirar uma linha deste artigo: nunca alimente um bare YYYY-MM-DD corda para new Date() Quando a interpretação do horário local é importante.

5. A ISO 8601 é a resposta para uma pergunta diferente. ISO 8601 (2026-07-06, big-endian, acolchoado com zero) resolve a data representação- it' é inequívoco onde 07/06/2026 Significa 6 de julho em Ohio e 7 de junho em Oxford, e classifica lexicograficamente. Use-o em todos os logs, APIs e nomes de arquivo. mas não faz nada para data aritmética; um par perfeitamente formatado de datas ISO ainda tem todos os quatro problemas acima. Disciplina de Formato e Disciplina de Matemática são disciplinas separadas.

A meta-lição: use uma biblioteca de calendário real (date-fns, Luxon, Carbon ou Temporal quando seus alvos a suportarem), faça aritmética no espaço de calendário em vez de espaço de milissegundos e verifique casos de borda - fins de mês, dias bissextos, DST fins de semana - contra uma fonte independente como o calculadora. A verificação independente é o objetivo principal do ferramental; mais sobre essa filosofia no Guia do conversor de carimbo de data/hora.


Casos de uso comuns

Períodos de faturamento e períodos de avaliação

Os sistemas de assinatura vivem e morrem na matemática da data A exploração precisa de contagens exatas de dias dentro de um período de faturamento; os testes precisam de uma data final inequívoca; os planos anuais precisam sobreviver a 29 de fevereiro Ao construir fluxos de pagamento, agora calculo cada limite de período duas vezes - uma vez em código, uma vez na calculadora - antes de escrever o teste Ele pegou bugs reais pelo menos quatro vezes, sempre nas bordas de final de mês ou DST, e sempre do tipo que de outra forma teria surgido como um e-mail confuso do cliente Se o dinheiro se multiplicar contra uma contagem de dias em qualquer lugar do seu sistema, verifique a contagem de dias de forma independente.

Prazos do projeto e planejamento de sprint

O & quot; Quantas semanas de trabalho entre agora e a data de lançamento?" surge em todas as reuniões de planeamento, e a resposta que as pessoas calculam nas suas cabeças é de uma ou duas pessoas de forma fiável - os humanos são maus a contar através dos limites do mês Obter a verdadeira lacuna do calendário em dias e semanas leva cinco segundos e fundamenta a conversa A partir daí subtrai feriados e amortece honestamente, em vez de começar a partir de um número que já estava otimista por uma semana.

Cálculos de contrato, aviso e prazo

As datas legais e de RH vêm com convenções implacáveis: um período de aviso prévio de 90 dias, uma janela de cura de 30 dias, um arquivamento devido & quot; dentro de 21 dias de serviço." Estes são exatamente os campos minados inclusivos contra exclusivos, e o custo de estar um dia atrasado é categoricamente pior do que o custo de estar um dia mais cedo Calcule o intervalo e, em seguida, confirme qual convenção de ponto final o documento usa. (E para qualquer coisa que realmente importa, um advogado bate em uma calculadora - a ferramenta informa a contagem, não a jurisdição & #39; regras de contagem)

Cálculos de idade e posse

Idades, anos de serviço, tempos de vida da conta - todos os & quot; diferença em anos e meses & quot; problemas com uma regra de fixação escondida dentro (alguém nascido em 29 de fevereiro tem um aniversário legal de 28 de fevereiro ou 1 de março, dependendo da jurisdição, o que é uma coisa real que os engenheiros tiveram que codificar).Para uma resposta rápida - quantos anos tem essa conta, quanto tempo desde a última implantação, quantos dias desde o incidente - a calculadora fornece o valor exato sem carregar um REPL.

Verificações de sanidade de dados

Quando um relatório diz que a diferença média de pedidos para entrega é de 47 dias e seu instinto diz duas semanas, faça uma briga real e verifique as duas datas manualmente. Metade das vezes o "bug" é uma mudança de fuso horário ou um mês/dia trocado na análise upstream. Verificar o local três ou quatro linhas em uma calculadora confiável é a maneira mais rápida de decidir se desconfiança do pipeline ou do seu instinto. Para observar o que mudou entre dois relatórios exportados, o ferramenta diff de texto Combina bem com este fluxo de trabalho.


Contando convenções comparadas

convenção Seg → Sex igual usado para cuidado com
Exclusivo (lacuna) 4 dias Noites de hotel, provisão de juros, idade em dias Sente-se "um curto" para leitores não técnicos
Inclusive (span) 5 dias Dias de medicação, duração de eventos, "dias de cobertura" Off-by-one quando misturado com sistemas exclusivos
dias úteis 4 ou 5 menos feriados SLAs, estimativas de envio, prazos legais Os calendários de feriados diferem por país e até por contrato
Períodos exatos de 24 horas Depende dos horários Aluguel, estacionamento, janelas de tarifas de API DST faz um dia local 23h e outro 25h
Meses/anos/anos "1 mês depois" Ciclos de faturamento, contratos, locação As duraçãos dos meses variam; aperto versus overflow no final do mês

A mensagem real da tabela: "Quanto tempo entre essas datas" não é uma questão. Escolha a linha que corresponda ao seu problema, nomeie-a explicitamente em seu código e sua cópia, e toda a categoria de disputa desaparece. Esta é a mesma disciplina que o resto da Kit de ferramentas para desenvolvedores web continua empurrando - torne o implícito explícito e metade de seus bugs evapore.


FAQ

O que é uma calculadora de diferença de datas?

Uma calculadora de diferença de data calcula a diferença exata entre duas datas do calendário, expressa em dias, semanas, meses e anos Ao contrário da matemática mental ou da subtração ingênua de milissegundos, ela aplica regras reais do calendário - durações variáveis de meses, anos bissextos, regras de século - de modo que o resultado é correto em casos extremos, como fevereiro em um ano bissexto ou intervalos que abrangem transições de horário de verão.

Como calcular o número de dias entre duas datas?

Insira ambas as datas no Calculadora de diferença de datas e leia a contagem de dias Fazendo isso à mão, conte os dias restantes no mês de início, adicione os meses completos entre eles, depois adicione os dias no mês de fim - e decida antecipadamente se deve contar a data de término em si Essa última decisão, incluindo versus contagem exclusiva, é onde a maioria dos cálculos manuais dá errado por um.

A data final é incluída na contagem de dias entre as datas?

Por convenção, não - o padrão & quot; difference" é exclusivo, contando os intervalos entre as datas, então de segunda a sexta-feira é de 4 dias Mas muitos contextos do mundo real (horários de medicamentos, períodos de cobertura, duração dos eventos) contam inclusivamente, tornando-o 5. nenhum dos dois está errado; eles respondem a perguntas diferentes Sempre indique qual convenção você & #39;re usando quando o número entra em um contrato ou uma fatura.

Por que minha matemática com datas em JavaScript dá uma resposta diferente?

Três suspeitos habituais: new Date("YYYY-MM-DD") Analisa as strings de datas nuas UTC, mudando a data por um dia em fusos horários ocidentais; dividindo as diferenças de milissegundos em 86.400.000 nas transições de horário de verão em que um dia não é de 24 horas; e adiciona meses com o legado que o objeto Data transborda no mês termina (31 de janeiro + 1 mês = 3 de março). Use uma biblioteca com reconhecimento de calendário, como Date-FNS, Luxon ou a API temporal em vez de aritmética bruta.

Como são contados os meses quando eles têm comprimentos diferentes?

Diferenças de mês são computadas no calendário, não dividindo dias por uma média: 15 de março a 15 de setembro é exatamente 6 meses, embora ele & #39; s 184 dias A ambiguidade aparece com datas de ancoragem após o dia 28 - um mês após 31 de janeiro é normalmente fixado a 28 ou 29 de fevereiro Sistemas de cobrança bem comportados grampo; código ingênuo transborda para o início de março, que é um bug genuíno que vale a pena verificar.

Os anos bissextos afetam a diferença de datas?

Sim - qualquer intervalo que se estenda a 29 de fevereiro em um ano bissexto (como 2024 ou 2028) contém um dia a mais do que o mesmo intervalo em um ano comum, e as calculadoras corretas contabilizam isso automaticamente A regra sutil: anos divisíveis por 100 não são anos bissextos, a menos que também divisíveis por 400, então 2000 foi um ano bissexto, mas 2100 won' t be. Laminados à mão " divisíveis por 4 & quot; as verificações falham exatamente nesses anos.

Como os fusos horários afetam o cálculo dos dias entre as datas?

Uma data nua é uma janela diferente de 24 horas em cada fuso - horário, pelo que dois sistemas em zonas diferentes podem discordar legitimamente sobre o que o & quot; hoje & quot; é - e um carimbo - hora perto da meia - noite pode cair em datas de calendário diferentes dependendo da zona usada para o interpretar Para diferenças puras de data - calendário, os fuso - horário don & #39; t apply; para datas derivadas de carimbo - hora, converta ambos os carimbos - hora para a mesma zona usando primeiro uma ferramenta como a conversor de carimbo de data/hora.

A calculadora de diferença de datas Toolz.dev é gratuita e privada?

Sim em ambos os aspectos. Ele é executado inteiramente em seu navegador sem inscrição - as datas inseridas nunca são carregadas, registradas ou armazenadas em qualquer lugar. Isso importa mais do que parece, já que os pares de datas podem codificar fatos confidenciais, como períodos de emprego, cronogramas médicos ou prazos legais, e não há razão técnica para uma calculadora precisar vê-los no lado do servidor.

Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!