Meses entre duas datas
Digite duas datas e receba os meses inteiros entre elas mais os dias que sobram: de 15 de janeiro de 2024 a 10 de março de 2025 são 13 meses e 23 dias. 31 de janeiro mais um mês dá o fim de fevereiro. 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
- Data ISO inicial
- 2024-01-15
- Data ISO final
- 2025-03-10
- Data inicial
- 2024-01-15
- Data final
- 2025-03-10
- Meses
- 13
- Dias
- 23
Contratos, cronogramas de aluguel, idade de bebês em meses, marcos de assinatura e prazos de projetos muitas vezes precisam de mais do que uma contagem bruta de dias: precisam de quantos meses de calendário inteiros cabem entre duas datas e quantos dias restam depois desses meses. Esta calculadora de meses entre duas datas aceita um par de datas de calendário ISO, valida cada dia segundo as regras gregorianas de ano bissexto com aritmética inteira pura, avança a data anterior mês a mês com ajuste de fim de mês e retorna um resultado estruturado de meses inteiros mais dias restantes que formulários, planilhas e APIs podem fixar sem reimplementar casos-limite de calendário. Formatos inválidos e datas impossíveis, como trinta de fevereiro, falham com entrada inválida e não são cobrados.
Escolhendo as datas ISO from e to e quais formatos são aceitos
Envie dois campos de string chamados from e to. Cada valor deve ser uma data de calendário ISO com ano de quatro dígitos, mês e dia, por exemplo dois mil e vinte e quatro hífen zero um hífen quinze. Você também pode enviar um datetime ISO-8601 completo com horas, minutos, segundos, frações de segundo opcionais, um Z final para UTC ou um deslocamento numérico como mais zero dois dois-pontos zero zero.
Quando há horário presente, o motor valida os campos do relógio para que horas impossíveis sejam rejeitadas, mas apenas a parte civil ano-mês-dia é usada na matemática de meses inteiros e dias restantes, o que mantém o produto honesto para quem busca meses entre duas datas, e não uma contagem regressiva em segundos.
Os anos são limitados de um a nove mil novecentos e noventa e nove, os meses de um a doze, e os dias devem existir naquele mês, incluindo o vinte e nove de fevereiro de ano bissexto quando aplicável. Qualquer coisa fora desses intervalos é entrada inválida, em vez de ser silenciosamente avançada para o mês seguinte.
Casos de uso
Idade em meses para bebês e pediatria
Aplicativos de saúde e de pais calculam quantos meses e dias inteiros se passaram desde uma data de nascimento sem médias de mês em ponto flutuante nem desvios de fuso horário do hospedeiro.
Marcos de assinaturas e projetos
Painéis de cobrança e de projetos medem tempo de casa ou duração de fase entre duas datas ISO fixas e invertem o texto com direction quando a data-alvo já passou.
Perguntas frequentes
O que acontece se uma data for inválida?
Formato ISO incorreto, dias de calendário impossíveis como 30 de fevereiro e campos fora do intervalo são rejeitados e não são cobrados.
A calculadora de meses entre duas datas é gratuita?
A ferramenta do navegador funciona gratuitamente no seu dispositivo.
Isso usa o relógio do servidor ou o Date do JavaScript?
Não. As duas datas vêm das suas strings de entrada. O motor usa aritmética gregoriana pura de meses, sem Date, rede ou aleatoriedade, portanto os resultados são totalmente determinísticos.
Como os meses são contados quando a data inicial é dia 31?
Com ajuste ao fim do mês: um mês depois de 31 de janeiro é o último dia de fevereiro, e não uma data de março. A ferramenta avança mês a mês assim e conta à parte os dias que sobram.
E se a data final for anterior à inicial?
Você continua recebendo meses e dias positivos para o intervalo, além de um sentido marcado como para trás e valores com sinal negativo, para saber que a data-alvo já passou.
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/date/months-between \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"from":"2024-01-15","to":"2025-03-10"}'const res = await fetch("https://api.kit.forhosting.com/date/months-between", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"from": "2024-01-15",
"to": "2025-03-10"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/date/months-between",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"from": "2024-01-15",
"to": "2025-03-10"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/date/months-between", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"from":"2024-01-15","to":"2025-03-10"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"from":"2024-01-15","to":"2025-03-10"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/date/months-between", 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
{
"from": "2024-01-15",
"to": "2025-03-10"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "date.months_between",
"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
O caminho nunca toca o relógio de parede, a aleatoriedade ou a rede, portanto strings from e to idênticas sempre produzem JSON idêntico na integração contínua e em produção.
Escolhendo as datas ISO from e to e quais formatos são aceitos
Os aliases start, begin e start_date mapeiam para from; end, until, end_date e target mapeiam para to, seguindo nomes comuns de formulários e APIs. Ambos os campos são obrigatórios: omitir qualquer um, enviar algo que não seja string ou passar espaço em branco vazio dispara invalid_input, que indica qual lado está faltando.
Lendo months, days, total_days, campos com sinal e direction
Os campos months e days são sempre não negativos e juntos descrevem o intervalo civil absoluto: months é a maior contagem de meses inteiros que você pode avançar a partir da data anterior sem ultrapassar a data posterior, usando ajuste de fim de mês para que trinta e um de janeiro mais um mês caia no último dia de fevereiro. O campo days é a diferença civil de dias restante após esse avanço, de modo que um intervalo de meados de janeiro ao início de março pode reportar um mês e algumas dezenas de dias, em vez de apenas um total bruto de dias. Em caso de sucesso, a resposta ecoa as strings originais from e to, mais from_date e to_date normalizadas como YYYY-MM-DD. O campo total_days é a diferença absoluta dos números de dias civis entre as duas datas e é útil quando você também precisa de uma contagem de dias sem ordem. Quando o fim é anterior ao início, is_past é true, direction é backward, e signed_months mais signed_days_remainder carregam sinal negativo, enquanto months e days permanecem não negativos para exibição. Quando as duas datas coincidem, is_zero é true, direction é zero e toda magnitude é zero. Use months e days para texto legível, total_days para ordenar por duração e direction quando a linguagem do produto precisar dizer restante versus vencido.
Uso da API, preços, fluxos de produto e limites práticos
Chame a ferramenta gratuita de meses entre duas datas no navegador para calculadoras de aluguel, idade de bebê em meses, verificações de aniversário de contrato e demonstrações em sala de aula sem instalar bibliotecas de moment nem bancos de dados de fuso horário. Mantenha as expectativas honestas: este produto mede meses gregorianos de calendário inteiros e dias restantes entre duas datas explícitas; ele não inventa o hoje a partir do relógio do servidor, não pula fins de semana como meses úteis nem carrega calendários de feriados. As entradas de origem seguem as mesmas regras de retenção de outros itens parse do KIT. Envie um corpo JSON com os campos de string obrigatórios from e to como datas ISO. Use a API pré-paga quando um sistema de cobrança, painel de tempo de casa de RH, plataforma imobiliária ou planejador de projetos precisar de um contrato estável sob saldo KIT a US$ 0,002 por item bem-sucedido; falhas de validação nunca consomem saldo depois que o motor rejeita a requisição. Combine este endpoint com uma ferramenta de contagem regressiva entre duas datas quando você também precisar de horas e segundos para um cronômetro de lançamento, ou com uma calculadora de dias no mês quando primeiro validar os comprimentos de fevereiro antes de montar cronogramas. Autores que distribuem SDKs podem mapear months e days diretamente em dois widgets numéricos e acionar o estilo de vencido a partir de is_past, usando o mesmo formato de resposta em cada linguagem.
Casos de integração
Duração de aluguéis e contratos
Ferramentas imobiliárias e jurídicas recebem as datas ISO de início e fim de locação, exibem meses inteiros mais dias restantes na página de resumo e armazenam total_days para ordenar contratos ativos.
Perguntas técnicas
Como obtenho os meses entre duas datas?
Envie JSON com from e to como datas ISO (por exemplo from: "2024-01-15" e to: "2025-03-10"). A resposta inclui months, days, total_days e uma string formatted.
E se o fim for anterior ao início?
months e days permanecem não negativos para o intervalo absoluto, signed_months e signed_days_remainder ficam negativos, is_past é true e direction é backward.