Convertir duración ISO 8601 a segundos
Convierta una duración ISO 8601, como P3DT4H30M, en un único total de segundos. El conversor interpreta años, meses, semanas, días, horas, minutos y segundos, y aplica longitudes nominales explícitas: cada año tiene 365 días y cada mes, 30 días.
Ejecutar — gratis
Como solo utiliza el texto introducido y nunca consulta calendarios, zonas horarias, fechas actuales ni horarios de verano, una misma entrada siempre genera el mismo resultado.
Cómo leer una duración ISO 8601
Una duración ISO 8601 comienza con la letra P. Después aparecen las unidades de fecha y, si hay unidades de tiempo, el separador T. Por ejemplo, P2W significa dos semanas, P3DT6H indica tres días y seis horas, y PT15M representa quince minutos. La letra M significa meses antes de T y minutos después de T. El conversor reconoce años, meses, semanas, días, horas, minutos y segundos en el orden estándar. También acepta una fracción decimal en la unidad más pequeña indicada, con punto o coma como separador. Introduzca la duración completa, sin explicaciones adicionales. La respuesta reproduce la entrada normalizada, enumera todos los componentes analizados y devuelve total_seconds. Las duraciones vacías, los indicadores desordenados, los valores negativos, P o PT aislados y cualquier texto ajeno se rechazan. Esta validación estricta permite detectar datos defectuosos en el punto de integración, en lugar de convertirlos silenciosamente en una cifra engañosa.
Años y meses nominales
Las duraciones compuestas solo por días, horas, minutos o segundos tienen una longitud fija inequívoca. Los años y meses naturales son distintos: un mes real puede tener 28, 29, 30 o 31 días, y un año puede tener 365 o 366. Una duración aislada no incluye la fecha inicial necesaria para resolver esas diferencias. Por eso, esta herramienta emplea constantes nominales visibles en cada respuesta: 365 días por año y 30 días por mes. Una semana siempre contiene siete días; un día, 86,400 segundos; una hora, 3,600 segundos; y un minuto, 60 segundos. El total es la suma ponderada de los componentes. Así, un mes aporta siempre 2,592,000 segundos. Estas reglas no describen un intervalo concreto del calendario. Si necesita segundos transcurridos entre dos instantes reales, utilice una operación de diferencia entre fechas con extremos explícitos.
Uso seguro de resultados deterministas
El total devuelto es un número JSON entero expresado en segundos. Se admiten fracciones ISO únicamente en la unidad escrita más pequeña y cuando el cálculo produce un segundo entero. Por ejemplo, PT0.5M equivale a 30 segundos, mientras que cualquier valor que necesite una fracción de segundo se rechaza. También se descartan los totales que exceden el rango de enteros seguros de JavaScript, evitando presentar como exacta una duración demasiado grande. El resultado es apropiado para campos de bases de datos, validación de retrasos, configuración de tiempos límite, simulaciones y pruebas repetibles, siempre que todos compartan las mismas convenciones nominales. Conserve el objeto de supuestos si otra persona pudiera interpretar los meses como unidades dependientes del calendario. La API cuesta $0.002 por solicitud. Ninguna consulta de red, reloj actual, aleatoriedad ni objeto Date interviene en el cálculo.
Qué puede hacer con ella
Normalizar duraciones de API
Convierta campos ISO 8601 entrantes en un entero antes de validarlos, compararlos o almacenarlos.
Preparar pruebas repetibles
Genere totales esperados estables sin depender de una fecha inicial, zona horaria o calendario actual.
Revisar valores de configuración
Compruebe retenciones, demoras y tiempos límite escritos en ISO, junto con sus supuestos nominales.
Preguntas frecuentes
¿Cuánto dura un año en este conversor?
Cada año equivale exactamente a 365 días, es decir, 31,536,000 segundos.
¿Cuánto dura un mes?
Cada mes equivale nominalmente a 30 días, o 2,592,000 segundos; no se utiliza ninguna fecha inicial.
¿M significa meses o minutos?
M antes del separador T significa meses; después de T significa minutos.
¿Se aceptan duraciones decimales?
Sí, en la unidad presente más pequeña y si el resultado es un número entero seguro de segundos. Puede usar punto o coma.
¿Cuánto cuesta la API?
Cada solicitud a la API cuesta $0.002. La conversión interactiva también puede ejecutarse localmente en el navegador.
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/iso-duration-to-seconds \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"duration":"P1Y2M3DT4H5M6S"}'const res = await fetch("https://api.kit.forhosting.com/date/iso-duration-to-seconds", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"duration": "P1Y2M3DT4H5M6S"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/date/iso-duration-to-seconds",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"duration": "P1Y2M3DT4H5M6S"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/date/iso-duration-to-seconds", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"duration":"P1Y2M3DT4H5M6S"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"duration":"P1Y2M3DT4H5M6S"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/date/iso-duration-to-seconds", 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
{
"duration": "P1Y2M3DT4H5M6S"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "date.iso_duration_to_seconds",
"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_chars | 200 |
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. |