Conversor de duraciones ISO 8601

Convierte notación de duración ISO 8601 (p. ej. PT1H30M) a segundos totales y viceversa. Útil para interpretar formatos usados por la API de YouTube, tiempos de espera en AWS y feeds RSS de podcasts.

Ejemplos habituales de duración ISO 8601

Una duración ISO 8601 empieza con "P", seguido de años/meses/días, y luego "T" seguido de horas/minutos/segundos. A continuación se muestran ejemplos habituales y los segundos que representan.

Notación Segundos totales Nota
PT30S 30 Un valor típico de tiempo de espera corto, como 30 segundos
PT1H30M 5,400 1 hora y 30 minutos: una forma habitual de expresar la duración de una película o de un vídeo de YouTube
P1D 86,400 1 día (24 horas): se usa a menudo para periodos de retención de logs o caducidad de caché
P3Y6M4DT12H30M5S 110,842,205 Un ejemplo combinado equivalente a 3 años, 6 meses, 4 días, 12 horas, 30 minutos y 5 segundos (los años/meses usan la aproximación de 365,25 días)

Consejos

  • Las duraciones que incluyen años o meses no tienen un número fijo de segundos en la realidad, así que esta herramienta usa una aproximación fija: 1 año = 365,25 días y 1 mes = 30,44 días.
  • Al generar una cadena de duración a partir de segundos, elige "solo días/horas/minutos/segundos" para evitar por completo la aproximación de años/meses y obtener un resultado exacto e independiente del calendario.
  • La API de datos de YouTube devuelve la duración del vídeo en el campo contentDetails.duration usando notación ISO 8601, así que puedes pegarla directamente aquí para obtener el total en segundos.
  • Servicios en la nube como AWS Lambda o API Gateway a veces usan notación de duración ISO 8601 para configurar tiempos de espera, lo que hace útil esta herramienta para verificar esos valores.
  • Los feeds RSS de podcasts a veces usan el formato de duración ISO 8601 en la etiqueta itunes:duration, además del formato hh:mm:ss más habitual.

Preguntas frecuentes

PT1H30M es notación de duración ISO 8601 para "1 hora y 30 minutos". La "P" marca el inicio de un periodo y la "T" marca el inicio de la parte horaria (horas/minutos/segundos); esto importa porque sin "T", "1M" significa "1 mes", mientras que tras la "T" significa "1 minuto".

Ejemplos conocidos incluyen el campo de duración de vídeo de la API de datos de YouTube (contentDetails.duration), la configuración de tiempos de espera y caducidad en servicios en la nube como AWS y Google Cloud, y los feeds RSS de podcasts (itunes:duration). Muchos lenguajes de programación también admiten su análisis y generación, como las clases Duration/Period de Java o la librería isodate de Python.

Un año tiene 365 o 366 días según sea bisiesto, y un mes va de 28 a 31 días, por lo que ninguno de los dos tiene un número fijo de segundos. Esta herramienta usa 365,25 días como promedio práctico para un año (y su doceava parte, unos 30,44 días, para un mes). Si necesitas un resultado exacto, usa el modo "exacto", que expresa las duraciones solo con días, horas, minutos y segundos.

Sí, se admite notación como "P2W" (2 semanas). Ten en cuenta que, según la especificación ISO 8601, la notación de semanas es una abreviatura independiente que no puede combinarse con componentes de año/mes/día ni con la parte horaria.

Si la entrada no empieza por "P", las unidades no siguen el orden correcto (A→M→D y, tras la "T", H→M→S), o se omiten todas las unidades (una duración vacía), la herramienta determina que no se puede convertir y muestra un mensaje de error en lugar de un resultado.
ツールくん

A propósito — ¿Por qué el mundo de la informática tiene un formato dedicado a las "duraciones"?

ISO 8601 es conocido sobre todo como el estándar internacional para representar fechas y horas, pero ese mismo estándar también define una notación independiente para las "duraciones": la longitud de tiempo entre dos puntos, en lugar de un único instante. Una fecha-hora responde a "cuándo", mientras que una duración responde a "cuánto tiempo", y aunque a primera vista se parecen, representan tipos de información fundamentalmente distintos. La notación dedicada que empieza por "P" existe precisamente para mantener clara esa distinción.

Una de las razones por las que la notación de duración resulta tan útil en la práctica es que evita errores de desajuste de unidades al intercambiar datos entre sistemas. Si una respuesta de API simplemente devolviera el número "30", quien la reciba tendría que consultar la documentación para saber si se trata de segundos o de minutos. Con "PT30S", el valor y su unidad viajan juntos en una sola cadena, de modo que un analizador correcto nunca puede interpretarlo mal.

Por eso mismo la API de datos de YouTube devuelve la duración del vídeo en formato ISO 8601: una cadena como "PT4M13S" significa sin ambigüedad un vídeo de 4 minutos y 13 segundos. Plataformas en la nube como AWS y Google Cloud a veces adoptan el mismo formato para configurar tiempos de espera y caducidad, así que si detectas esta notación en un archivo de configuración YAML o en una respuesta JSON, pasarla por esta herramienta para ver el número equivalente de segundos puede ayudarte a hacerte una idea más clara del valor.

Al mismo tiempo, el estándar tiene una particularidad interesante: las duraciones que incluyen años o meses no tienen una longitud absoluta fija. El mismo "P1Y" puede representar 365 o 366 días reales según si abarca un año bisiesto. En última instancia, esta es la razón por la que esta herramienta debe recurrir a una aproximación siempre que una conversión implique años o meses.