Tutti gli articoli

ISO 8601 Duration: come scrivere una durata in formato standard

Lo standard ISO 8601 definisce non solo un formato di date, ma anche un formato per scrivere durate — una stringa come PT1H30M, che descrive in modo univoco e leggibile da una macchina "1 ora 30 minuti".

La struttura del formato

La stringa inizia sempre con la lettera P (period). I componenti della data (anni, mesi, giorni) seguono subito P, mentre i componenti dell'orario (ore, minuti, secondi) seguono la lettera T, che separa la parte data dalla parte orario. Ad esempio, P2DT4H significa "2 giorni e 4 ore".

Perché serve la lettera T

Senza il separatore T, la lettera M sarebbe ambigua — indica sia i mesi (nella parte data) sia i minuti (nella parte orario). Ecco perché P1M significa "1 mese", mentre PT1M significa "1 minuto".

Come Python gestisce questo formato

La libreria isodate in Python converte le stringhe ISO 8601 duration direttamente in oggetti timedelta, e pandas accetta lo stesso formato quando interpreta colonne di durata con pd.to_timedelta(). Questo evita di dover scrivere un parser manuale solo per trasformare PT1H30M in qualcosa che il codice possa sommare o confrontare.

A cosa serve

  • Decifrare la durata di un video o di un evento dalla risposta di un'API di terze parti.
  • Generare una stringa di durata ISO 8601 valida per la propria API o feed di dati.
  • Convertire durate tra un formato leggibile dall'uomo e la notazione ISO leggibile dalla macchina.

Secondi frazionari nella notazione

Lo standard ISO 8601 consente una parte frazionaria solo nell'ultimo (il più piccolo) componente della stringa — ad esempio, PT1.5S significa "1,5 secondi", e PT1H30.5M significa "1 ora 30,5 minuti". Una parte frazionaria in qualsiasi componente diverso dall'ultimo non è prevista dallo standard.

Prova lo strumento