Diferença entre datas e calculadora de idade
Muita gente busca quantos dias há entre duas datas e uma idade confiável em anos, meses e dias. Esta ferramenta responde às duas perguntas só com regras de calendário civil: sem fuso horário, sem dias úteis e sem arredondamentos ocultos. Você obtém os dias totais, um detalhamento assinado de anos, meses e dias, e o par ordenado usado no cálculo.
Executar grátis
Apenas datas civis — sem relógio nem fuso
Cada entrada é um dia de calendário no formato AAAA-MM-DD. O cálculo não consulta horas, horário de verão nem o relógio do servidor para a diferença em si. Assim, o mesmo par de datas permanece estável na ferramenta gratuita do navegador e na API. Dias inválidos como 2023-02-29 ou 2024-04-31 são rejeitados em vez de ajustados em silêncio, para que um erro de digitação não vire um aniversário errado.
Anos, meses e dias com regra coerente de fim de mês
O detalhamento usa meses de calendário com ajuste ao último dia válido: somar um mês a 2024-01-31 resulta em 2024-02-29, não em um dia inventado de março. Se um mês provisório ultrapassar a data final, o algoritmo recua um mês e conta os dias inteiros restantes. Por isso, de 2024-01-31 a 2024-02-29 há um mês e zero dias, e de 2024-01-31 a 2024-02-28 há zero meses e vinte e oito dias. Os dias totais excluem o dia inicial: a mesma data produz zero.
Modo diferença e modo idade compartilham o mesmo oráculo
O modo diferença compara date_from com date_to e devolve total_days, years, months, days, sign e o par ordenado. O modo idade usa birthdate e uma reference_date explícita para resultados determinísticos; se você omitir a referência na ferramenta gratuita, usa-se a data civil local do dispositivo. Numericamente, a idade é a mesma função que a diferença com outros nomes de campo, de modo que uma idade com referência fixa não pode divergir da diferença desse mesmo par.
Resultados com sinal quando a ordem se inverte
Se a data final for anterior à inicial, a ferramenta não troca as entradas em silêncio. Mantém a ordem enviada nos campos de eco e aplica sinal negativo aos dias totais e ao detalhamento. Essa simetria cobre aniversários futuros, intervalos invertidos e checagens automáticas que precisam detectar um intervalo ao contrário sem um segundo caminho de código.
Casos de uso
Dias entre marcos de um projeto
Meça dias de calendário exclusivos entre o início e a entrega sem misturar fins de semana, feriados ou fusos horários.
Idade civil para formulários e elegibilidade
Calcule anos, meses e dias em relação a uma data de referência fixa para que revisões e exportações sejam reproduzíveis.
Aniversários e bordas de 29 de fevereiro
Trate aniversários em 29 de fevereiro e pares de fim de mês com a mesma regra de ajuste dos meses comuns.
Verificações automáticas de intervalos
Chame a API em um fluxo e armazene total_days junto com o detalhamento assinado nos registros de auditoria.
Perguntas frequentes
A contagem de dias é inclusiva ou exclusiva?
Exclusiva do dia inicial. A mesma data produz zero dias totais; o dia civil seguinte produz um.
Como o fim de mês é tratado?
Os meses são somados com ajuste ao último dia válido do mês de destino e corrigidos se a data intermediária ultrapassar a data final. Os dias inteiros restantes completam o detalhamento.
O que acontece com 29 de fevereiro em ano não bissexto?
O aniversário de 2024-02-29 a 2025-02-28 é um ano, zero meses e zero dias pela regra de ajuste. Entradas inválidas como 2023-02-29 são rejeitadas.
Em que difere dos dias úteis?
Esta capacidade conta a diferença natural de calendário e a idade civil. Dias úteis e feriados pertencem a outra ferramenta e não se aplicam aqui.
O resultado pode ser negativo?
Sim. Quando a data final precede a inicial, total_days e os campos de anos, meses e dias levam sinal negativo sem trocar os valores enviados.
A calculadora é grátis no computador e no celular?
A página funciona localmente e grátis em navegadores de desktop e celulares. O aplicativo nativo chama a API e mostra a tarifa; a mesma solicitação custa US$ 0,002 com saldo pré-pago de KIT.
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/dev/date-diff \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"date_from":"2024-01-31","date_to":"2024-02-29"}'const res = await fetch("https://api.kit.forhosting.com/dev/date-diff", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"date_from": "2024-01-31",
"date_to": "2024-02-29"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/date-diff",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"date_from": "2024-01-31",
"date_to": "2024-02-29"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/date-diff", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"date_from":"2024-01-31","date_to":"2024-02-29"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"date_from":"2024-01-31","date_to":"2024-02-29"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/date-diff", 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
{
"date_from": "2024-01-31",
"date_to": "2024-02-29"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.date_diff",
"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.
Limites
year_min | 1 |
year_max | 9999 |
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. |