Percentual de tempo decorrido em um intervalo ISO
Informe um início, um fim e o momento que deseja avaliar, e veja quanto do intervalo já passou: 14:00 numa janela de 08:00 a 20:00 UTC são 50%. Nada depende do relógio atual. 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
- 2026-07-25T08:00:00Z
- End
- 2026-07-25T20:00:00Z
- Referência
- 2026-07-25T14:00:00Z
- Progresso (%)
- 50
- Decorrido (ms)
- 21.600.000
- Duração (ms)
- 43.200.000
- Relação com a referência
- within
Esta calculadora de percentual de tempo decorrido mede o avanço em um intervalo explícito sem consultar o relógio atual. Informe a data e hora inicial, a final e o instante de referência que você deseja avaliar. Cada valor deve incluir Z ou um deslocamento UTC numérico; assim, instantes equivalentes geram a mesma resposta em qualquer computador ou navegador. O resultado inclui o percentual arredondado e limitado, os milissegundos decorridos com sinal, a duração total, o estado da limitação e a posição da referência em relação ao intervalo.
Defina o intervalo completo e o instante de referência
O avanço só faz sentido quando os limites e o ponto de observação são inequívocos. Depois da normalização dos deslocamentos, end deve representar um instante posterior a start. A referência pode ficar dentro, antes ou depois do intervalo.
Por isso, a calculadora atende verificações históricas, marcos agendados, contagens regressivas, janelas de serviço e testes reproduzíveis, pois nunca substitui a referência pelo relógio do dispositivo. Um valor como 2026-07-25T14:00:00Z é explícito; um horário local sem deslocamento é rejeitado. Formas com deslocamentos diferentes podem indicar o mesmo instante: 2026-07-25T16:00:00+02:00 e 2026-07-25T14:00:00Z são iguais neste cálculo.
Os campos do calendário são validados antes da conversão, inclusive a duração dos meses e as regras gregorianas de anos bissextos, evitando que datas impossíveis mudem silenciosamente para outro dia.
Entenda o cálculo em UTC e a limitação
Primeiro, o cálculo converte cada data e hora para a mesma escala de milissegundos UTC. O percentual bruto é o tempo decorrido dividido pela duração e multiplicado por cem. Por padrão, o percentual retornado fica entre zero e cem: uma referência anterior ao início gera zero, enquanto outra posterior ao fim gera cem.
Você pode definir percentuais mínimo e máximo diferentes quando precisar de outra escala limitada, desde que o máximo não seja menor que o mínimo. Um instante exatamente em qualquer limite é considerado interno ao intervalo e produz naturalmente o percentual da extremidade correspondente.
Casos de uso
Medir uma janela de lançamento
Calcule um percentual estável para uma implantação ou manutenção em um ponto de controle registrado explicitamente.
Reproduzir um valor do painel
Salve o instante de referência com o intervalo e regenere exatamente o percentual visto anteriormente.
Testar o comportamento nos limites
Verifique estados anteriores, internos e posteriores com limites configuráveis e saída esperada determinística.
Perguntas frequentes
A ferramenta usa o horário atual?
Não. Você deve informar reference explicitamente, e o cálculo nunca consulta um relógio.
Há suporte para deslocamentos de fuso horário?
Sim. Use Z ou um deslocamento numérico como +02:00 ou -05:30; todas as entradas são normalizadas em UTC.
O início e o fim podem ser iguais?
Não. end deve ser posterior a start, pois um intervalo de duração zero não tem percentual decorrido definido.
E se o momento for antes do início ou depois do fim?
Por padrão a porcentagem fica em 0 antes do início e em 100 depois do fim. O tempo decorrido mantém o sinal, então você continua vendo o quanto o momento está fora do intervalo.
Com quantas casas decimais sai a porcentagem?
Com seis por padrão. Você pode escolher de zero a doze casas decimais, e o arredondamento só acontece depois que a porcentagem é mantida dentro dos limites.
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/time-progress-percent \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"start":"2026-07-25T08:00:00Z","end":"2026-07-25T20:00:00Z","reference":"2026-07-25T14:00:00Z"}'const res = await fetch("https://api.kit.forhosting.com/date/time-progress-percent", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"start": "2026-07-25T08:00:00Z",
"end": "2026-07-25T20:00:00Z",
"reference": "2026-07-25T14:00:00Z"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/date/time-progress-percent",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"start": "2026-07-25T08:00:00Z",
"end": "2026-07-25T20:00:00Z",
"reference": "2026-07-25T14:00:00Z"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/date/time-progress-percent", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"start":"2026-07-25T08:00:00Z","end":"2026-07-25T20:00:00Z","reference":"2026-07-25T14:00:00Z"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"start":"2026-07-25T08:00:00Z","end":"2026-07-25T20:00:00Z","reference":"2026-07-25T14:00:00Z"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/date/time-progress-percent", 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": "2026-07-25T08:00:00Z",
"end": "2026-07-25T20:00:00Z",
"reference": "2026-07-25T14:00:00Z"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "date.time_progress_percent",
"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
Defina o intervalo completo e o instante de referência
Forneça start, end e reference como datas e horas ISO 8601 completas, com segundos e Z ou um deslocamento UTC numérico explícito.
Entenda o cálculo em UTC e a limitação
Ele subtrai start de end para obter a duração total e start de reference para obter o tempo decorrido com sinal. A limitação afeta apenas progress_percent; elapsed_ms mantém o sinal e mostra quanto a referência antecede ou ultrapassa o intervalo. clamped informa se o valor bruto foi alterado, e reference_relation retorna before, within ou after.
Escolha a precisão e obtenha resultados determinísticos
A implementação não acessa a rede, não usa aleatoriedade, não chama Date nem consulta o fuso horário do sistema. Guarde a referência exata junto ao resultado se precisar reproduzi-lo depois. Para exibir progresso ao vivo, gere a referência explicitamente no seu aplicativo e envie esse valor; a capacidade permanece intencionalmente um cálculo puro, sem leitura oculta do relógio. Use precision para selecionar de zero a doze casas decimais em progress_percent; o padrão é seis. O arredondamento só ocorre depois que o percentual bruto é limitado, preservando como definitivas as extremidades configuradas. duration_ms e elapsed_ms continuam sendo diferenças inteiras em milissegundos, permitindo auditar o percentual ou exibir uma duração separada. A conversão gregoriana é aritmética; por isso, a mesma solicitação válida produz o mesmo JSON em um Worker no servidor e no navegador.
Perguntas técnicas
Quanto custa pela API?
Cada solicitação custa US$ 0,002. O mesmo cálculo puro também pode ser executado no navegador.
O que ocorre quando a referência fica fora do intervalo?
O percentual fica restrito ao intervalo configurado, enquanto elapsed_ms com sinal e reference_relation preservam a posição real.