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
- Insira a data de início
- Insira a data final
- Clique em 'Calculate interval' para comparar as duas datas
- 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
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 diasDuraçã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 ganttCá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.