Ponto médio entre duas datas
Encontrar o ponto médio entre duas datas responde a uma pergunta diferente de contar dias inteiros, montar uma contagem regressiva ou calcular idade: pede o único instante equidistante entre dois pontos conhecidos da linha do tempo.
Executar grátis
Esta calculadora do ponto médio entre duas datas aceita dois datetimes ISO-8601 explícitos—carimbos completos com Z ou deslocamento numérico, ou só data tratada como meia-noite UTC—, converte ambos em milissegundos de época com aritmética gregoriana pura, faz a média desses instantes com o piso determinístico da soma e devolve o datetime intermediário formatado em UTC com precisão de milissegundo. Verificações clássicas: meia-noite a meia-noite em dias consecutivos cai ao meio-dia; um intervalo de um segundo cai ao meio-segundo; extremos idênticos devolvem o mesmo instante. O motor nunca consulta o relógio do host, não chama a rede e não usa o objeto Date da plataforma, de modo que as mesmas entradas produzem sempre o mesmo ponto médio no widget gratuito do navegador e na API a US$ 0,002 por solicitação bem-sucedida. Use para marcos de metade de projeto, centros de janelas de faturamento e fixtures reproduzíveis em CI.
O que significa um ponto médio de instantes e o que a resposta contém
Calcular a média de dois instantes absolutos é o análogo temporal de achar o ponto médio de um segmento na reta numérica: se você conhece o início e o fim de uma reunião, um estudo, uma campanha ou uma janela contratual, o ponto médio é o único instante UTC equidistante em milissegundos de ambos os extremos. Isso não é a data civil «no meio de março» em um intervalo de vários dias, nem um ponto médio de dias úteis que pula fins de semana, nem uma média de relógio de parede que finge que cada dia civil tem exatamente vinte e quatro horas e ignora deslocamentos. Você informa start e end como cadeias ISO-8601; cada uma pode ser um datetime completo com segundos fracionários opcionais e deslocamento Z ou de horas e minutos, ou um valor só data YYYY-MM-DD tratado como meia-noite UTC para que pares de calendário simples ainda funcionem. A calculadora valida que ambos os dias existem no calendário gregoriano—incluindo 29 de fevereiro só em anos bissextos—, converte cada entrada em contagem de milissegundos de época UTC com aritmética civil proléptica e define midpoint_epoch_ms como o piso da soma das duas épocas dividida por dois, de modo que um total ímpar de milissegundos ainda produza uma única escolha determinística. A resposta ecoa as cadeias originais start e end para auditoria, devolve midpoint como cadeia ISO UTC com três dígitos fracionários e Z final, informa start_epoch_ms, end_epoch_ms e midpoint_epoch_ms para pipelines numéricos, e inclui span_ms como distância absoluta mais signed_span_ms como end menos start para ver a direção quando o segundo instante é anterior ao primeiro. Um campo formula breve reafirma a média para documentar o contrato junto da resposta. Casos rejeitados incluem start ou end ausente, cadeias que não são ISO-8601, meses ou dias impossíveis como 2023-02-29, componentes de relógio inválidos e anos fora de um a 9999. Se você precisa de contagens de dias de calendário, partes de contagem regressiva ou idade em anos e meses, use essas ferramentas dedicadas; esta página responde apenas ao instante exato no meio do caminho entre dois carimbos validados.
Como start e end são lidos e como o ponto médio permanece reproduzível
O primeiro campo preferido é start, mas os aliases from, date1, a e begin são aceitos para que planilhas, query strings e formulários reutilizem o mesmo contrato sem renomear colunas. O segundo preferido é end, com aliases to, date2, b e finish pela mesma razão. Cada cadeia é aparada; valores só data viram meia-noite UTC; datetimes podem usar T ou um espaço entre data e hora; segundos fracionários são aceitos e truncados a milissegundos inteiros antes da média para que ruído submilissegundo não invente um segundo ponto médio. Deslocamentos como mais zero dois dois pontos zero zero ou menos zero cinco dois pontos zero zero são convertidos em UTC subtraindo os minutos de deslocamento da época civil local, de modo que uma noite em Nova York e uma manhã em Paris que referem o mesmo intervalo absoluto ainda se media corretamente em UTC. Internamente o motor mapeia cada triplo civil para uma contagem serial de dias com o mapeamento conhecido days_from_civil, multiplica por oitenta e seis milhões e quatrocentos mil milissegundos por dia, soma os milissegundos da hora do dia e ajusta o deslocamento—aritmética inteira pura sem Date, Math.random nem rede. O ponto médio é reformatado com o mapeamento inverso civil_from_days para que a cadeia UTC impressa coincida exatamente com midpoint_epoch_ms. Entradas idênticas produzem o mesmo instante como ponto médio; inverter o par deixa o ponto médio e o intervalo absoluto inalterados e apenas inverte o sinal de signed_span_ms. Como cada passo é determinístico, a execução gratuita no navegador e o caminho de API pago concordam byte a byte no mesmo módulo, ideal para fixtures de CI que fixam 2024-01-01T12:00:00.000Z como ponto médio de meias-noites consecutivas sem reimplementar tabelas de bissextos à mão.
Onde a aritmética de ponto médio se encaixa em planejamento, ciência e software
Gerentes de projeto marcam pontos de controle na metade do caminho quando uma janela de lançamento ou sprint é definida por dois carimbos explícitos e as partes interessadas querem um único horário de revisão no meio da janela em vez de um rótulo vago de meio da semana. Pesquisadores e sistemas de laboratório registram o ponto médio de um intervalo de observação para que tabelas resumo mostrem um instante representativo em gráficos e junções sem escolher arbitrariamente o início ou o fim. Equipes de finanças e operações centralizam janelas de faturamento ou de aviso quando uma política se refere ao meio de um período já armazenado como par de instantes ISO em um razão. Desenvolvedores chamam o contrato a partir de scripts para gerar pontos médios determinísticos em agendadores, afirmar campos intermediários em relatórios ou atender requisitos de produto que exigem média UTC pura sem deriva de fuso do objeto Date do host. Educadores e redatores de normas usam a ferramenta para demonstrar que o ponto médio de um intervalo de um segundo é o meio-segundo, e que entradas com deslocamento ainda colapsam em uma única resposta normalizada com Z. Nesta página o trabalho roda inteiramente no seu navegador; pela API cada consulta bem-sucedida custa US$ 0,002, validação falha não é cobrada e nada é armazenado após a resposta. Essa divisão—exploração interativa gratuita e API idêntica paga—corresponde ao restante do catálogo KIT de nível A e permite passar de uma verificação pontual a um pipeline sem mudar o resultado matemático. Combine com days-between, countdown-between ou ajudas de época quando precisar de passos temporais relacionados, e reserve esta página para a intenção de busca do ponto médio entre duas datas como datetime exato.
Casos de uso
Marcos de metade de projeto e campanha
Calcule o horário exato de revisão no meio da janela para um sprint, lançamento ou campanha de marketing definida por dois carimbos ISO.
Pontos médios de observação e experimento
Registre um único instante UTC representativo de um intervalo de observação para que gráficos e junções não escolham arbitrariamente o início ou o fim.
Fixtures determinísticos de CI e faturamento
Gere valores de ponto médio reproduzíveis para testes unitários, centros de razão e pipelines sem depender de Date ou do relógio do host.
Perguntas frequentes
Quanto custa a calculadora do ponto médio entre duas datas?
É gratuita no seu navegador nesta página. Pela API uma solicitação bem-sucedida custa US$ 0,002; entradas inválidas não são cobradas.
Como o ponto médio é definido?
Ambas as entradas são convertidas em milissegundos de época UTC. midpoint_epoch_ms é floor((start_ms + end_ms) / 2) e formatado como cadeia ISO-8601 UTC com precisão de milissegundo.
Fusos horários e deslocamentos afetam o resultado?
Sim, corretamente: deslocamentos em qualquer entrada são convertidos em UTC antes da média. O ponto médio sempre retorna com Z final em UTC.
E se os dois datetimes forem iguais, ou end for anterior a start?
Entradas idênticas devolvem esse mesmo instante como ponto médio. Se end for anterior a start, o ponto médio não muda e apenas signed_span_ms fica negativo.
Valores só de data são aceitos?
Sim. Uma cadeia YYYY-MM-DD é tratada como meia-noite UTC daquele dia civil e depois mediada como qualquer outro instante.
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/midpoint-between-dates \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"start":"2024-01-01T00:00:00Z","end":"2024-01-02T00:00:00Z"}'const res = await fetch("https://api.kit.forhosting.com/date/midpoint-between-dates", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"start": "2024-01-01T00:00:00Z",
"end": "2024-01-02T00:00:00Z"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/date/midpoint-between-dates",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"start": "2024-01-01T00:00:00Z",
"end": "2024-01-02T00:00:00Z"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/date/midpoint-between-dates", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"start":"2024-01-01T00:00:00Z","end":"2024-01-02T00:00:00Z"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"start":"2024-01-01T00:00:00Z","end":"2024-01-02T00:00:00Z"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/date/midpoint-between-dates", 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-01T00:00:00Z",
"end": "2024-01-02T00:00:00Z"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "date.midpoint_between_dates",
"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. |