Calcular dias entre datas
De 15 de janeiro de 2024 a 10 de março de 2025 são 420 dias, exatamente 60 semanas, ou 13 meses de calendário e 23 dias. Informe duas datas e veja as três medidas, sem fuso horário envolvido. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- Início
- 2024-01-15
- End
- 2025-03-10
- Direção
- forward
- Dias com sinal
- 420
- Dias
- 420
- Semanas
- 60
Esta calculadora de diferença entre datas mede o intervalo entre duas datas de calendário sem depender de fusos horários, horários do dia ou regras de horário de verão. Informe duas datas reais no formato YYYY-MM-DD para receber o número exato de dias, o equivalente em semanas, a divisão em semanas completas e a divisão em meses de calendário com os dias restantes. Os resultados são determinísticos para datas gregorianas dos anos 0001 a 9999. Ao inverter as datas, você mantém o mesmo intervalo absoluto e recebe uma indicação clara de que a direção é retroativa.
Informe duas datas de calendário precisas
Preencha a primeira data no campo start e a segunda no campo end, usando rigorosamente o padrão YYYY-MM-DD. Os zeros à esquerda são importantes: escreva 2026-07-05, e não 2026-7-5. Cada valor é validado de acordo com o calendário gregoriano, em vez de ser apenas comparado com um formato textual.
Assim, 31 de abril é recusado, 29 de fevereiro só é aceito em ano bissexto e o mês 13 jamais gera um resultado aparentemente plausível. O intervalo de anos compatível vai de 0001 a 9999. O cálculo considera somente dias de calendário, portanto não há horário oculto, fuso local, transição de horário de verão nem conversão para UTC.
Quando end vem depois de start, a direção é forward; quando vem antes, é backward. Datas iguais produzem same e zero em todas as medidas.
Interprete corretamente os meses de calendário
Os meses não têm todos a mesma quantidade de dias. Por isso, a calculadora não trata um mês como trinta dias fixos nem como uma duração média. O campo months conta avanços completos de meses de calendário, partindo da data anterior em direção à posterior.
Esse par é uma decomposição de calendário, enquanto days continua sendo a distância exata universal e weeks continua sendo uma conversão em unidades de sete dias.
Casos de uso
Medir o prazo de um projeto
Converta datas de início e entrega em dias exatos, semanas completas e meses de calendário para planejar.
Conferir períodos de cobrança
Conte meses completos e dias restantes entre datas de serviço sem considerar que todo mês tem trinta dias.
Validar a lógica de datas
Gere intervalos determinísticos para testes, importações, relatórios e sistemas que precisam rejeitar datas impossíveis.
Perguntas frequentes
As datas inicial e final são contadas de forma inclusiva?
Não. Days mede limites de calendário decorridos; portanto, duas datas consecutivas ficam a um dia de distância.
Como as semanas são calculadas?
Uma semana tem exatamente sete dias. O resultado inclui um valor decimal, semanas completas e dias restantes.
Como os meses são calculados?
São contados avanços completos de meses de calendário e, depois, os dias exatos que ainda restam.
O que acontece se eu informar primeiro a data mais recente?
Você recebe o mesmo intervalo em dias, semanas e meses, e o resultado indica que a direção é para trás. Datas iguais dão zero em todas as medidas e a direção aparece como mesmo dia.
Fuso horário ou horário de verão alteram o resultado?
Não. O cálculo usa apenas dias de calendário, sem hora do relógio, fuso horário local, mudança de horário nem conversão para UTC, então qualquer pessoa recebe a mesma resposta para as mesmas datas.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/calc2/date-difference \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"start":"2024-01-15","end":"2025-03-10"}'const res = await fetch("https://api.kit.forhosting.com/calc2/date-difference", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"start": "2024-01-15",
"end": "2025-03-10"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/calc2/date-difference",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"start": "2024-01-15",
"end": "2025-03-10"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/calc2/date-difference", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"start":"2024-01-15","end":"2025-03-10"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"start":"2024-01-15","end":"2025-03-10"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/calc2/date-difference", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"start": "2024-01-15",
"end": "2025-03-10"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "calc2.date_difference",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
Informe duas datas de calendário precisas
Aliases como from e to também são aceitos em integrações via API, enquanto os nomes principais start e end deixam formulários e exemplos fáceis de entender.
Entenda os dias e as semanas do resultado
O campo days representa o número absoluto de limites de meia-noite a meia-noite que separam as datas. O campo weeks divide o total absoluto de dias por sete e arredonda o valor exibido para seis casas decimais, o que ajuda em estimativas e relatórios. O cálculo não presume semanas úteis, fins de semana, feriados ou contagem inclusiva. Por exemplo, de 1º para 2 de janeiro há um dia, e um dia bissexto é contado como qualquer outro dia real do calendário. signed_days preserva a ordem: é positivo quando end é posterior, negativo quando end é anterior e zero quando as duas entradas coincidem. Para uma divisão inteira exata, whole_weeks mostra grupos completos de sete dias e remaining_days_after_weeks mostra a sobra de zero a seis. Esses dois campos sempre recompõem o total com whole_weeks multiplicado por sete, mais a sobra. O intervalo é um período de calendário decorrido, adequado para cronogramas, durações, dados de teste e cálculos consistentes pela API.
Interprete corretamente os meses de calendário
Quando o dia original não existe no mês de destino, o cálculo usa o último dia válido desse mês; isso garante um comportamento estável para intervalos iniciados em 29, 30 ou 31 de janeiro. remaining_days_after_months informa os dias exatos que restam depois desses meses completos. Se as entradas estiverem invertidas, a decomposição mensal parte da data cronologicamente anterior para manter medidas absolutas coerentes; direction e signed_days registram a ordem. Use days para prazos, whole_weeks para blocos de trabalho e months com a sobra para assinaturas, aniversários, tempo de serviço ou outros períodos baseados no calendário.
Perguntas técnicas
Quanto custa uma solicitação à API?
Cada solicitação à API custa US$ 0,002. A calculadora pode ser executada localmente no navegador sem custo.
O que acontece se uma data for inválida?
A solicitação falha com invalid_input quando um valor tem formato incorreto ou não representa uma data gregoriana real.