ToolActToolAct

Calculadora de Diferença de Datas

Calcula dias, semanas, meses, anos entre duas datas

Calcular o intervalo entre duas datas

O que é uma Calculadora de Diferença de Datas?

Uma calculadora de diferença entre datas mede o intervalo entre duas datas do calendário e mostra o resultado em dias, semanas, meses aproximados, anos aproximados e unidades como horas ou minutos. Ela ajuda a verificar duração de projetos, períodos de férias, ciclos de cobrança, aniversários, janelas de retenção e intervalos históricos simples. O resultado é uma diferença entre datas, não automaticamente uma contagem inclusiva das duas pontas: de 1º de janeiro a 3 de janeiro normalmente há dois dias de diferença, a menos que a regra do caso conte ambos os dias. Meses e anos são aproximados porque os meses têm tamanhos diferentes. Para dias úteis, feriados, fusos horários ou prazos legais, use regras específicas.

Como usar

Como usar

  1. Insira a data de início
  2. Insira a data final
  3. Clique em 'Calculate interval' para comparar as duas datas
  4. Visualize os resultados: dias, semanas, meses, anos, horas, minutos e segundos

Regras de contagem

  • Verifique se a sua tarefa exige um intervalo exclusivo ou inclusivo. Em muitas regras de negócio, a contagem inclui tanto a data de início quanto a data final.
  • Em tarefas com vários fusos horários, converta primeiro as datas para um único fuso horário, especialmente quando as horas ou minutos são relevantes.

Casos de uso

Medir a diferença exata em dias entre duas datasSelecione as datas inicial e final e calcule o intervalo em dias, com totais adicionais para semanas, meses aproximados, anos aproximados, horas, minutos e segundos. O cálculo segue as regras gregorianas, então 1900 é tratado como ano comum e 2000 como ano bissexto, o que importa quando qualquer um dos limites está próximo a 29 de fevereiro.
Verificar tempo decorrido para eventos e registrosUse para assinaturas, períodos de serviço, duração de viagens, cronogramas de projetos, aniversários, sequências de estudo e qualquer registro em que contar manualmente entre meses é propenso a erros. Mantenha as duas datas de origem ao lado do resultado para que o intervalo possa ser verificado depois, pois um '36 meses' declarado é muito mais difícil de auditar do que o par bruto de início e fim.
Usar valores aproximados de mês e ano com cuidadoO resultado principal é em dias. Os valores de mês e ano são resumos aproximados, então períodos de cobrança, idade legal e regras contratuais devem usar a regra específica exigida pelo contexto. Use os valores aproximados para orientação, não para decisões finais de política. Números de semana ISO, onde a semana 1 contém a primeira quinta-feira do ano, são outra convenção que a simples contagem de dias não produz por conta própria.
Decidir contagem inclusiva vs. exclusiva antes de citar o intervaloPara períodos de férias e períodos de teste, concorde antecipadamente se ambos os limites são contados, depois rotule o resultado como 'entre' ou 'abrangendo' para que relatórios jurídicos, de RH e financeiro não divirjam. A diferença de um dia parece trivial em um único intervalo, mas se acumula entre exportações de RH, folha de pagamento e finanças quando a convenção não é aplicada uniformemente.
Verificar meses aproximados contra o calendário específicoQuando um ciclo de cobrança, período de experiência ou janela de garantia é definido em meses ou anos, execute o mesmo par por uma regra consciente de calendário para confirmar que o valor aproximado corresponde à política. Misturar as duas unidades no mesmo relatório é uma fonte comum de disputas contratuais, especialmente para renovações B2B de SaaS onde o mesmo cliente está em um plano de 30 dias e um de mês calendário. Cláusulas de aniversário que dizem '12 meses a partir da data de início' geralmente significam exatamente um ano calendário, não 365 dias, então um início em 15 de jan se torna 15 de jan do ano seguinte, não 14 ou 16 de jan.

Princípio técnico

A diferença exata em dias é calculada como Math.floor((end.getTime() - start.getTime()) / 86_400_000), onde 86.400.000 é o número de milissegundos em um dia de 24 horas sem horário de verão. Isso resulta em um intervalo exclusivo — de 1º de janeiro a 3 de janeiro são 2 dias, não 3 — porque a subtração mede o intervalo entre dois instantes, não conta quadrados do calendário. Para contagem inclusiva (contar ambos os limites), adicione 1 ao resultado; muitas regras legais, de férias e cobrança exigem isso, e o erro de deslocamento é a causa mais comum de divergências entre relatórios de RH e finanças. Semanas são simplesmente dias / 7; a página também exibe horas = dias * 24, minutos = dias * 1440 e segundos = dias * 86.400 como totais derivados. As diferenças em meses e anos são intencionalmente rotuladas como "aproximadas" porque os meses e anos do calendário variam em duração. A abordagem simples é dias / 30,436875 (mês gregoriano médio) e dias / 365,2425 (ano gregoriano médio em um ciclo de 400 anos), o que é adequado para relatórios e dashboards, mas incorreto para contratos. Para um "X meses completos entre" com precisão de calendário, o algoritmo subtrai os componentes de ano x 12 + mês e depois decrementa em 1 se o dia do mês final for anterior ao dia do mês inicial — é assim que a maioria das bibliotecas de data (date-fns differenceInMonths, dayjs $.diff('month'), Temporal Duration.from) calcula isso. O cálculo de anos tem a mesma peculiaridade: 29/02/2024 a 28/02/2025 é às vezes contado como 1 ano (limitando ao fim do mês) e às vezes como 0 anos, 11 meses e 30 dias, dependendo da convenção. Os anos bissextos seguem a regra gregoriana (divisível por 4, exceto séculos não divisíveis por 400, então 1900 = comum, 2000 = bissexto, 2024 = bissexto). Um intervalo que inclui 29 de fevereiro ganha um dia extra automaticamente porque a contagem de dias é ancorada em milissegundos desde a época, não em campos do calendário. O tratamento de fuso horário é crítico quando os dois limites estão em resolução abaixo de um dia: subtrair dois valores Date construídos a partir de strings de horário local pode estar errado pelo offset UTC local, e um intervalo que cruza uma transição de horário de verão pode ter 23 ou 25 horas em vez das 24 nominais. O problema Y2038 (estouro de time_t signed 32-bit em 2038-01-19T03:14:07Z) não afeta esta página porque o Date do JavaScript usa um float de 64 bits capaz de representar datas até aproximadamente 100 milhões de dias de cada lado da época, mas sistemas downstream escritos em C 32-bit ainda precisam de atenção.

  • Dias exatos = Math.floor((end - start) / 86_400_000); 86,4M ms por dia sem horário de verão.
  • O resultado é exclusivo por padrão: 1º de jan a 3 de jan = 2 dias; adicione 1 para contagem inclusiva (ambos os limites).
  • Mês aproximado usa média de 30,436875 dias; ano usa 365,2425 dias no ciclo gregoriano de 400 anos.
  • Diferença de mês com precisão de calendário: (a2-a1)*12 + (m2-m1) e -1 se dia final < dia inicial — corresponde a date-fns differenceInMonths.
  • Anos bissextos: divisível por 4, exceto séculos que devem ser divisíveis por 400 (1900 não, 2000 sim, 2024 sim).
  • Transições de horário de verão criam dias de 23h e 25h; uma subtração de 24h pode não equivaler a um dia de calendário.
  • O Date do JavaScript é um float de 64 bits, imune ao Unix Y2038 (estouro de time_t 32-bit em 2038-01-19 03:14:07 UTC).

Exemplos

Dois anos calendário completos (2025-01-01 a 2026-12-31)

Start : 2025-01-01
End   : 2026-12-31

Days     : 730
Weeks    : 104,29
Months   : ~24,00 (aprox)
Years    : ~2,00 (aprox)
Note     : 2028 é o próximo ano bissexto no intervalo, então o período inclui 29 Fev 2028 quando estendido.

Intervalo curto (3 dias)

Start : 2026-06-11
End   : 2026-06-14

Days     : 3
Hours    : 72
Minutes  : 4320
Seconds  : 259200
Contagem inclusiva (contar ambas as pontas): 4 dias

Duração de projeto que cruza a virada de ano

Start : 2026-01-15  (kickoff)
End   : 2026-07-20  (go-live)

Days     : 186
Weeks    : 26,57
Months   : ~6,16
Use case : Status reports, retrospectiva, resumo de gantt

Cálculo de idade em dias

Birthday      : 1995-03-15
Today         : 2026-06-11

Days alive    : 11.411
Years (aprox) : 31,24
Months        : ~374,9
Útil quando é necessária uma contagem exata de dias (ex.: marcos)

Ressalva de fuso horário (Tóquio vs Los Angeles)

A mesma data calendário '2026-07-15' representa instantes reais distintos:
  Tokyo  (UTC+9)  -> 2026-07-15 00:00 = 2026-07-14 15:00 UTC
  Los Angeles (UTC-7) -> 2026-07-15 00:00 = 2026-07-15 07:00 UTC
Diferença se usado de forma ingênua: cerca de 16 horas, suficiente para alterar um resultado de 1 dia.
Solução: converta ambas as datas para o mesmo fuso horário antes de subtrair.

Perguntas frequentes

Como a diferença entre duas datas é calculada?

Aritmética de calendário: o resultado aparece como anos, meses e dias, além do total em semanas, dias, horas, minutos e segundos. Anos e meses são baseados em aniversário (a contagem de anos só sobe depois de passar o mesmo dia/mês), e os dias são a contagem de dias corridos entre as duas datas.

Por que anos + meses + dias não somam exatamente o total de dias?

Porque os meses têm de 28 a 31 dias. '1 ano, 2 meses e 5 dias' resulta em totais de dias diferentes dependendo de quais meses estão envolvidos terem 28, 29, 30 ou 31 dias. O campo de total de dias usa aritmética de calendário pura e é o número mais preciso.

O dia inicial é incluído ou excluído?

A página informa a contagem excluindo a data inicial — datas iguais mostram 0 dias de diferença. Se você precisa da contagem 'inclusiva' (por exemplo, para reservar diárias), some 1 ao resultado manualmente.

Finais de semana ou feriados são excluídos?

Não. Esta página conta todos os dias do calendário. Para diferenças em dias úteis (pulando finais de semana e, opcionalmente, feriados), use a 'Calculadora de Dias Úteis'.

Por que o componente de horário fica estranho depois de uma mudança de horário de verão?

A parte de horas e minutos usa tempo absoluto, então atravessar uma transição de horário de verão soma ou subtrai uma hora do campo de horário do dia. A contagem de dias em si não é afetada, porque a diferença em dias é baseada em calendário.

Qual é o intervalo máximo de datas que posso comparar?

O Date do JavaScript cobre ±100.000.000 dias a partir da época Unix, então qualquer par de datas históricas ou futuras dentro de aproximadamente ±271.000 anos funciona. Datas anteriores a 1582 usam aritmética gregoriana proléptica, que difere do calendário local em uso na época.

O cálculo é feito localmente?

Sim. As duas datas e o resultado ficam no seu navegador. Nada é enviado nem registrado.