Humanizar duración
Escriba una duración en segundos y obtenga un texto que se entiende de un vistazo: 183840 segundos son «2 days 3 hours 4 minutes», es decir, 2 días, 3 horas y 4 minutos. Las unidades a cero se omiten y la frase sale en inglés. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Longitud de la duración en segundos
- 183 840
- Segundos de entrada
- 183 840
- Días
- 2
- Horas
- 3
- Minutos
- 4
Un formateador de duración humanizada responde a una pregunta práctica que aparece en registros, paneles y textos de producto: dado un intervalo como número bruto de segundos, ¿qué debe leer una persona? Introduzca una duración no negativa en segundos y esta herramienta devuelve una frase compacta construida a partir de días, horas, minutos y segundos enteros; por ejemplo, ciento ochenta y tres mil ochocientos cuarenta segundos se convierten en dos días, tres horas y cuatro minutos.
Qué significa humanizar una duración y qué unidades aparecen
Una duración es un intervalo de tiempo, no una marca de calendario. Cuando los sistemas almacenan tiempo transcurrido casi siempre usan un conteo no negativo de segundos porque esa unidad es fácil de sumar, restar y serializar. A las personas, en cambio, les cuesta interpretar a simple vista grandes cantidades de segundos: noventa segundos son claramente un minuto y medio, pero ciento ochenta y tres mil ochocientos cuarenta segundos no se leen de un vistazo como dos días y unas horas.
Humanizar significa descomponer ese total en la escala familiar de días enteros de ochenta y seis mil cuatrocientos segundos, horas de tres mil seiscientos, minutos de sesenta y los segundos restantes. Las unidades intermedias que valen cero se omiten para que la frase sea breve —un día cinco minutos en lugar de un día cero horas cinco minutos—, mientras que una entrada totalmente en cero sigue imprimiendo cero segundos para que quien llama nunca reciba una cadena vacía.
Las etiquetas en singular y plural siguen la gramática habitual: una hora frente a dos horas, un minuto frente a dos minutos.
Consejos prácticos, límites y búsquedas relacionadas
Prefiera enviar números en lugar de cadenas ya formateadas cuando controle el cliente; las cadenas numéricas solo se aceptan si coinciden con un patrón numérico finito estricto. Mantenga las duraciones dentro del máximo publicado para que las multiplicaciones grandes no se vuelvan no finitas.
Al enseñar o probar, conserve un conjunto pequeño y conocido: un caso de éxito multiunidad como dos días tres horas cuatro minutos, una mezcla corta como un minuto treinta segundos, un caso de cero segundos, una entrada fraccionaria que se trunca limpiamente y un fallo negativo deliberado. Las comprobaciones de ida y vuelta son fáciles: recalcule days por ochenta y seis mil cuatrocientos más hours por tres mil seiscientos más minutes por sesenta más segundos y confirme que la suma iguala el campo de segundos enteros publicado.
Esta página se dirige a quienes buscan un formateador de duración humanizada, segundos a días horas minutos o tiempo transcurrido legible en línea; no es un formateador de fechas de calendario, ni un convertidor de zonas horarias, ni un monitor de disponibilidad, ni un suavizador de prosa.
Prefiera esta capacidad cuando ya disponga de un conteo de segundos y solo necesite una frase estable; si necesita nombres de mes o etiquetas de día de la semana a partir de una fecha de calendario, use una capacidad de formateo de fechas o de día de la semana. Documente la regla de truncado en comentarios del cliente para que los redactores sepan que medio segundo nunca se redondea hacia arriba a un segundo completo en esta herramienta.
Qué puede hacer con ella
Textos de tiempo transcurrido en incidentes y SLA
Las páginas de estado y las post-mortems convierten contadores brutos de segundos en frases como dos horas quince minutos que personas no técnicas pueden leer sin cálculo mental.
Cadenas esperadas en pruebas de temporizadores
Los equipos de ingeniería fijan etiquetas humanizadas para cuentas atrás, tiempos de ejecución de trabajos y longitudes de medios para que las capturas de UI sean deterministas entre navegadores.
Ejercicios escolares de tiempo transcurrido
El alumnado envía un total de segundos y comprueba el desglose impreso en días-horas-minutos-segundos frente a un resultado determinista antes de entregar las hojas de trabajo.
Preguntas frecuentes
¿Qué entrada acepta el formateador de duración humanizada?
Los valores fraccionarios se truncan a segundos enteros.
¿Qué ocurre con una duración negativa?
Las longitudes negativas se rechazan en lugar de tomarse en valor absoluto o embellecerse.
¿Qué unidades aparecen en la cadena legible?
Días, horas, minutos y segundos enteros. Las unidades intermedias en cero se omiten; una duración totalmente en cero se imprime como «0 seconds».
¿Formatea fechas de calendario o marcas de tiempo?
No. Solo humaniza la longitud de una duración pura. Use herramientas de formateo de fechas o de día de la semana cuando disponga de una fecha de calendario.
¿Es gratuito el formateador de duración humanizada?
La herramienta del navegador es gratuita y se ejecuta en local.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
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)Ejemplo de solicitud
{
"seconds": 183840
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "date.humanize_duration",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_seconds | 1000000000000 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
El cero está permitido y se imprime como cero segundos; los valores negativos se rechazan con un error invalid_input claro en lugar de un valor absoluto engañoso. La ruta es aritmética entera pura —sin red, sin semillas aleatorias, sin dependencia del reloj Date—, de modo que el ejecutor gratuito del navegador y la API de prepago devuelven el mismo JSON tras truncar entradas fraccionarias cada vez que se invoca.
Qué significa humanizar una duración y qué unidades aparecen
Las longitudes negativas quedan fuera del producto: un temporizador de transcurrido que retrocede es un error de datos, no una frase que embellecer, así que la validación falla con invalid_input nombrando el campo seconds.
Cómo invocar la API y qué se devuelve
Las entradas fraccionarias se aceptan y se truncan a segundos enteros antes de la división por unidades, de modo que el ruido de coma flotante no pueda alterar un límite casi entero. Al afirmar resultados en pruebas, prefiera comparar el campo human (o text) y el desglose numérico en lugar de reconstruir etiquetas a mano, porque las formas singular y plural forman parte del contrato publicado. Envíe un cuerpo JSON con un número finito obligatorio llamado seconds, que también puede suministrarse bajo los alias duration, value, secs o s. Los valores absolutos deben permanecer dentro del máximo publicado de un billón de segundos para que los productos intermedios sigan siendo finitos en el Worker y en el navegador. En caso de éxito la respuesta repite seconds como el total entero truncado, opcionalmente input_seconds cuando el valor bruto difería, days, hours, minutes y secs como enteros no negativos que recombinan el total, human y text como la misma frase legible, message como una frase resumen breve y steps como un array ordenado que describe el truncado y la descomposición. La validación fallida —campo ausente, números no finitos, valores por encima del máximo o cualquier duración negativa— devuelve invalid_input y no se cobra. El precio es un $0.002 fijo por petición correcta con unidad item y precio marginal cero.
Consejos prácticos, límites y búsquedas relacionadas
Las tareas fallidas que devuelven invalid_input no consumen saldo de prepago, lo que mantiene baratos los scripts exploratorios cuando el alumnado envía valores negativos a propósito.