Todos los artículos

ISO 8601 Duration: cómo escribir una duración en formato estándar

El estándar ISO 8601 define no solo un formato de fechas, sino también un formato para escribir duraciones — una cadena como PT1H30M, que describe de forma inequívoca y legible por máquina "1 hora 30 minutos".

La estructura del formato

La cadena siempre empieza con la letra P (period). Los componentes de fecha (años, meses, días) van justo después de P, mientras que los componentes de tiempo (horas, minutos, segundos) van después de la letra T, que separa la parte de fecha de la de tiempo. Por ejemplo, P2DT4H significa "2 días y 4 horas".

Por qué se necesita la letra T

Sin el separador T, la letra M sería ambigua — representa tanto meses (en la parte de fecha) como minutos (en la parte de tiempo). Por eso P1M significa "1 mes", mientras que PT1M significa "1 minuto".

Cuando una base de datos entiende ISO 8601 directamente

El tipo interval de PostgreSQL acepta cadenas con formato ISO 8601 duration como entrada válida, además de su propia sintaxis más flexible tipo "2 days 4 hours". Eso significa que se puede escribir directamente INTERVAL 'P2DT4H' en una consulta SQL y la base de datos lo interpretará sin necesidad de convertirlo antes en la aplicación.

Para qué se necesita esto

  • Descifrar la duración de un video o evento a partir de la respuesta de una API externa.
  • Generar una cadena de duración ISO 8601 válida para tu propia API o feed de datos.
  • Convertir duraciones entre un formato legible por humanos y la notación ISO legible por máquina.

Segundos decimales en la notación

El estándar ISO 8601 permite una parte decimal solo en el último (el más pequeño) componente de la cadena — por ejemplo, PT1.5S significa "1,5 segundos", y PT1H30.5M significa "1 hora 30,5 minutos". El estándar no contempla una parte decimal en ningún componente que no sea el último.

Probar la herramienta