Horas úteis entre duas datas e horas
Um chamado aberto na sexta, 24 de julho de 2026, às 15:00 UTC e fechado na segunda, dia 27, às 11:30 consumiu 4,5 horas úteis (270 minutos). Fim de semana e horas fora da janela diária não contam. 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 e hora de início
- 2026-07-24T15:00:00Z
- Data e hora de término
- 2026-07-27T11:30:00Z
- Segundos úteis
- 16.200
- Minutos úteis
- 270
- Horas úteis
- 4,5
- Início do expediente
- 09:00
Esta calculadora mede somente a parte de um intervalo explícito que coincide com uma janela diária de trabalho em UTC, de segunda a sexta-feira. Ela aceita datas e horas ISO com fuso, converte os dois limites para UTC por aritmética determinística e exclui sábados e domingos. Você pode manter a janela padrão das 09:00 às 17:00 ou informar outra no mesmo dia. A resposta traz segundos exatos e totais convenientes em minutos e horas.
Defina o intervalo e a jornada com precisão
A exigência do fuso impede que um horário local represente instantes diferentes em máquinas distintas. O início é inclusivo e o fim é exclusivo, permitindo somar intervalos consecutivos sem contar a fronteira duas vezes. Os dois limites devem ficar no mesmo dia UTC, e o encerramento precisa ser posterior à abertura.
Turnos noturnos são recusados para evitar uma atribuição ambígua do dia útil. Apenas a sobreposição real entra na conta: uma faixa iniciada na sexta pode contabilizar as últimas horas, ignorar o fim de semana e continuar na segunda. Feriados não são inferidos, pois variam conforme país, região, setor e empregador.
Entenda o cálculo UTC determinístico
Cada deslocamento informado é convertido em um instante UTC por aritmética inteira no calendário gregoriano. Em seguida, percorre o conjunto limitado de dias UTC alcançados. De segunda a sexta há uma janela candidata; sábado e domingo não contribuem.
Em cada dia útil, o sistema cruza o intervalo solicitado com abertura e encerramento e soma a interseção positiva em segundos. Limites iguais resultam em zero; um fim anterior ao início é recusado.
Use o resultado em rotinas operacionais
Equipes de suporte podem medir o tempo útil consumido por um chamado sem descontar noites e fins de semana da meta interna. Operações pode comparar reconhecimento e recuperação de incidentes em um relógio comum, mesmo quando as fontes usam deslocamentos diferentes. Finanças e serviços profissionais podem transformar atividades com horário registrado em totais revisáveis antes de aplicar regras próprias de cobrança.
Guarde os limites originais, a janela UTC escolhida e os segundos retornados; o registro poderá ser reproduzido porque o cálculo não depende da data atual, do fuso do servidor ou de calendário externo. Caso sua política inclua feriados, fins de semana regionais, pausas, turnos rotativos, horário local sazonal ou jornada noturna, aplique essas regras em outra camada. Este contrato fornece uma base UTC transparente, fácil de testar, somar e explicar.
Casos de uso
Medição de SLA de suporte
Conte apenas o tempo dentro da jornada entre a abertura e a solução de um chamado.
Relatórios de duração de incidentes
Normalize eventos com deslocamentos para uma agenda UTC e exclua os fins de semana.
Totais de serviço auditáveis
Gere segundos úteis determinísticos para cobrança ou conformidade sem regras locais ocultas.
Perguntas frequentes
Quais dias são excluídos?
Sábado e domingo em UTC são excluídos. Feriados e padrões regionais não entram no cálculo.
A jornada acompanha o horário de verão?
Não. A janela é definida em UTC e permanece estável diante de regras sazonais.
Posso definir uma jornada noturna?
Não. A abertura e o encerramento devem ocorrer no mesmo dia UTC, com o fim posterior.
O horário final entra na conta?
Não. O momento inicial conta e o final não, então você pode somar intervalos seguidos, como um por turno ou por dia, sem contar duas vezes o ponto em que eles se encontram.
As datas com horário precisam de fuso?
Sim. Cada uma deve trazer a marca UTC ou um deslocamento explícito. Um horário local sem fuso pode indicar momentos diferentes em computadores diferentes, então a calculadora não adivinha e converte tudo para UTC.
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/working-hours-between \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"start_datetime":"2026-07-24T15:00:00Z","end_datetime":"2026-07-27T11:30:00Z"}'const res = await fetch("https://api.kit.forhosting.com/date/working-hours-between", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"start_datetime": "2026-07-24T15:00:00Z",
"end_datetime": "2026-07-27T11:30:00Z"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/date/working-hours-between",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"start_datetime": "2026-07-24T15:00:00Z",
"end_datetime": "2026-07-27T11:30:00Z"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/date/working-hours-between", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"start_datetime":"2026-07-24T15:00:00Z","end_datetime":"2026-07-27T11:30:00Z"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"start_datetime":"2026-07-24T15:00:00Z","end_datetime":"2026-07-27T11:30:00Z"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/date/working-hours-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
{
"start_datetime": "2026-07-24T15:00:00Z",
"end_datetime": "2026-07-27T11:30:00Z"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "date.working_hours_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.
Limites
max_span_days | 36600 |
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 e a jornada com precisão
Informe `start_datetime` e `end_datetime` como datas e horas ISO completas, com `Z` ou deslocamento UTC numérico. A janela recorrente padrão vai das 09:00 às 17:00 UTC; você pode alterá-la por `workday_start` e `workday_end` no formato `HH:MM` de 24 horas.
Entenda o cálculo UTC determinístico
A implementação não cria `Date`, não lê relógio, localidade ou serviço de fuso, nem usa rede ou aleatoriedade. Isso trata corretamente o primeiro e o último dia parciais e iguala entradas com deslocamentos diferentes que indicam o mesmo instante. `working_seconds` é um inteiro exato. `working_minutes` e `working_hours` derivam desse valor e são arredondados a no máximo seis casas para manter o JSON estável. A resposta repete a janela efetiva e informa `timezone` como `UTC`, deixando as premissas visíveis em auditorias.
Use o resultado em rotinas operacionais
O navegador atende verificações pontuais, enquanto a API custa US$ 0,002 por solicitação bem-sucedida.
Perguntas técnicas
Quanto custa?
A API custa US$ 0,002 por solicitação bem-sucedida; o mesmo cálculo puro pode rodar no navegador.
As datas podem usar deslocamento UTC?
Sim. Use `Z` ou um deslocamento explícito, como `-04:00`; cada limite será normalizado para UTC.