Humanizar duração
Digite uma duração em segundos e receba um texto que se lê num relance: 183840 segundos são «2 days 3 hours 4 minutes», ou seja, 2 dias, 3 horas e 4 minutos. Unidades zeradas são omitidas e a frase sai em inglês. 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
- Comprimento da duração em segundos
- 183.840
- Segundos de entrada
- 183.840
- Dias
- 2
- Horas
- 3
- Minutos
- 4
Um formatador de duração humanizada responde a uma pergunta prática que aparece em logs, painéis e textos de produto: dado um intervalo como número bruto de segundos, o que uma pessoa deve ler? Informe uma duração não negativa em segundos e esta ferramenta devolve uma frase compacta montada com dias, horas, minutos e segundos inteiros; por exemplo, cento e oitenta e três mil oitocentos e quarenta segundos viram dois dias, três horas e quatro minutos. Engenheiros de suporte que explicam janelas de incidente, desenvolvedores que escrevem strings esperadas para testes unitários, professores que avaliam exercícios de tempo decorrido e equipes de produto que polêm estados vazios precisam da mesma redação determinística sem puxar uma biblioteca i18n pesada.
O que significa humanizar uma duração e quais unidades aparecem
Uma duração é um intervalo de tempo, não um carimbo de calendário. Quando sistemas armazenam tempo decorrido quase sempre usam uma contagem não negativa de segundos porque essa unidade é fácil de somar, subtrair e serializar. Humanos, porém, têm dificuldade de interpretar grandes contagens de segundos de relance: noventa segundos são claramente um minuto e meio, mas cento e oitenta e três mil oitocentos e quarenta segundos não são obviamente dois dias e algumas horas.
Humanizar significa decompor esse total na escada familiar de dias inteiros de oitenta e seis mil e quatrocentos segundos, horas de três mil e seiscentos, minutos de sessenta e os segundos restantes. Unidades intermediárias que valem zero são omitidas para a frase ficar curta —um dia cinco minutos em vez de um dia zero horas cinco minutos—, enquanto uma entrada toda zero ainda imprime zero segundos para que quem chama nunca receba string vazia.
Rótulos no singular e no plural seguem a gramática comum: uma hora versus duas horas, um minuto versus dois minutos.
Dicas práticas, limites e buscas relacionadas
Prefira enviar números em vez de strings pré-formatadas quando controlar o cliente; strings numéricas só são aceitas se casarem com um padrão numérico finito estrito. Mantenha durações dentro do máximo publicado para multiplicações grandes nunca virarem não finitas. Ao ensinar ou testar, guarde um conjunto pequeno conhecido: um caso de sucesso multiunidade como dois dias três horas quatro minutos, uma mistura curta como um minuto trinta segundos, um caso de zero segundos, uma entrada fracionária que faz floor limpo e uma falha negativa deliberada.
Checagens de ida e volta são fáceis: recalcule days vezes oitenta e seis mil e quatrocentos mais hours vezes três mil e seiscentos mais minutes vezes sessenta mais segundos e confirme que a soma iguala o campo de segundos inteiros publicado. Esta landing atende quem busca formatador de duração humanizada, segundos para dias horas minutos ou tempo decorrido legível online; não é formatador de data de calendário, não é conversor de fuso, não é monitor de uptime e não é suavizador de prosa.
Prefira esta capacidade quando você já tem uma contagem de segundos e só precisa de uma frase estável; se precisar de nomes de mês ou rótulos de dia da semana a partir de uma data de calendário, use uma capacidade de formatação de data ou dia da semana. Documente a regra de floor em comentários do cliente para redatores de produto saberem que meio segundo nunca arredonda para cima a um segundo inteiro nesta ferramenta.
Casos de uso
Textos de tempo decorrido em incidentes e SLA
Páginas de status e post-mortems convertem contadores brutos de segundos em frases como duas horas quinze minutos que não engenheiros leem sem aritmética mental.
Strings esperadas em testes de temporizadores
Equipes de engenharia fixam rótulos humanizados para contagens regressivas, tempos de job e durações de mídia para snapshots de UI determinísticos entre navegadores.
Exercícios escolares de tempo decorrido
Alunos enviam um total em segundos e conferem o desdobramento impresso em dias-horas-minutos-segundos com um resultado determinístico antes de entregar as folhas.
Perguntas frequentes
O que acontece com uma duração negativa?
Comprimentos negativos são rejeitados em vez de valor absoluto ou embelezamento.
Quais unidades aparecem na string legível?
Dias, horas, minutos e segundos inteiros. Unidades intermediárias zero são omitidas; duração toda zero imprime «0 seconds».
Isso formata datas de calendário ou timestamps?
Não. Só humaniza o comprimento de uma duração pura. Use ferramentas de formatação de data ou dia da semana quando tiver uma data de calendário.
O formatador de duração humanizada é gratuito?
A ferramenta no navegador é gratuita e roda localmente.
Posso digitar segundos com casas decimais?
Pode. Valores fracionários são aceitos e arredondados para baixo até o segundo inteiro antes da divisão em dias, horas e minutos, então pequenos ruídos nas casas decimais não mudam a frase.
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/humanize-duration \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"seconds":183840}'const res = await fetch("https://api.kit.forhosting.com/date/humanize-duration", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"seconds": 183840
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/date/humanize-duration",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"seconds": 183840
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/date/humanize-duration", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"seconds":183840}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"seconds":183840}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/date/humanize-duration", 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
{
"seconds": 183840
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "date.humanize_duration",
"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_seconds | 1000000000000 |
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
Zero é permitido e imprime-se como zero segundos; valores negativos são rejeitados com um erro invalid_input claro em vez de um valor absoluto enganoso. O caminho é aritmética inteira pura —sem rede, sem sementes aleatórias, sem dependência do relógio Date—, de modo que o executor gratuito do navegador e a API pré-paga devolvem o mesmo JSON após o floor de entradas fracionárias toda vez que você a chama.
O que significa humanizar uma duração e quais unidades aparecem
Comprimentos negativos estão fora da intenção do produto: um temporizador de decorrido que andou para trás é erro de dados, não frase para embelezar, então a validação falha com invalid_input nomeando o campo seconds.
Como chamar a API e o que volta na resposta
Entradas fracionárias são aceitas e floored para segundos inteiros antes da divisão por unidades, de modo que ruído de ponto flutuante não inverta um limite quase inteiro. Ao asserir resultados em testes, prefira comparar o campo human (ou text) e o desdobramento numérico em vez de reconstruir rótulos à mão, porque singular e plural fazem parte do contrato publicado. Envie um corpo JSON com um número finito obrigatório chamado seconds, que também pode ser fornecido sob os alias duration, value, secs ou s. Valores absolutos devem ficar dentro do máximo publicado de um trilhão de segundos para produtos intermediários permanecerem finitos no Worker e no navegador. Em sucesso a resposta ecoa seconds como o total inteiro floored, opcionalmente input_seconds quando o valor bruto diferiu, days, hours, minutes e secs como inteiros não negativos que recombinam o total, human e text como a mesma frase em inglês de contrato, message como frase resumo curta e steps como array ordenado descrevendo o floor e a decomposição. Validação falha —campo ausente, números não finitos, valores acima do máximo ou qualquer duração negativa— devolve invalid_input e nunca é cobrada. O preço é um US$ 0,002 fixo por requisição bem-sucedida com unidade item e preço marginal zero.
Dicas práticas, limites e buscas relacionadas
Tarefas falhas que devolvem invalid_input não consomem saldo pré-pago, o que mantém scripts exploratórios baratos quando aprendizes enviam negativos de propósito.
Perguntas técnicas
Qual entrada o formatador de duração humanizada aceita?
Um número finito não negativo de segundos (campo seconds, ou alias duration, value, secs, s). Valores fracionários são floored para segundos inteiros.