Conversione delle durate ISO 8601

Converte in entrambi i sensi fra la notazione delle durate della norma ISO 8601, per esempio PT1H30M, e il numero di secondi. Uno strumento gratuito per sviluppatori che permette di leggere e generare rapidamente questo formato, usato per la lunghezza dei filmati nell'interfaccia di YouTube, per i limiti di tempo di AWS e nei flussi RSS dei podcast.

Esempi tipici di durata ISO 8601

La notazione delle durate della norma ISO 8601 fa seguire alla lettera «P» anni, mesi e giorni e, dopo la «T», ore, minuti e secondi. La tabella riporta le notazioni più comuni con i secondi corrispondenti.

Notazione della durata Secondi complessivi Note
PT30S 30 Esempio tipico di indicazione breve, come un limite di trenta secondi
PT1H30M 5,400 Un'ora e trenta minuti: formato molto usato per la durata di un film o di un filmato su YouTube
P1D 86,400 Un giorno, cioè ventiquattro ore: si usa per il periodo di conservazione dei registri di un servente e per la scadenza delle cache
P3Y6M4DT12H30M5S 110,842,205 Esempio di notazione composita corrispondente a tre anni, sei mesi, quattro giorni, dodici ore, trenta minuti e cinque secondi (anni e mesi convertiti con l'approssimazione di 365,25 giorni per anno)

Consigli per l'uso

  • Poiché il numero di giorni di anni e mesi varia secondo il calendario, lo strumento converte in secondi usando valori fissi approssimati: 365,25 giorni per un anno e 30,44 per un mese.
  • Generando la stringa a partire dai secondi, la modalità con soli giorni, ore, minuti e secondi non ricorre ad alcuna approssimazione di anni e mesi e restituisce una notazione esatta, immune dagli scarti dovuti agli anni bisestili.
  • La durata dei filmati restituita dall'interfaccia dati di YouTube, nel campo contentDetails.duration, è in formato ISO 8601: potete incollarla qui e convertirla in secondi.
  • Alcuni servizi in rete, come AWS Lambda e API Gateway, usano la notazione ISO 8601 per i limiti di tempo: lo strumento torna comodo per verificare i valori configurati.
  • Nei flussi RSS dei podcast, oltre al formato con ore, minuti e secondi separati dai due punti, per la durata dell'audio si usa talvolta proprio la notazione ISO 8601.

Domande frequenti

PT1H30M rappresenta un'ora e trenta minuti nella notazione delle durate ISO 8601. La «P» segnala l'inizio del periodo, la «T» l'inizio della parte oraria, cioè ore, minuti e secondi: attenzione perché senza la «T» la sigla «1M» significa un mese, mentre dopo la «T» significa un minuto.

Fra i casi più noti ci sono la durata dei filmati nell'interfaccia dati di YouTube, nel campo contentDetails.duration, i limiti di tempo e le scadenze di vari servizi in rete come AWS e Google Cloud e i flussi RSS dei podcast, con l'elemento itunes:duration. Fra i linguaggi di programmazione, le classi Duration e Period di Java e la libreria isodate di Python sanno leggere e generare durate ISO 8601.

Un anno dura 365 o 366 giorni secondo che sia comune o bisestile e un mese va da 28 a 31 giorni: un valore fisso di secondi per un anno, a rigore, non esiste. Come riferimento pratico lo strumento adotta 365,25 giorni per un anno, media che tiene conto degli anni bisestili, e un dodicesimo di quel valore, circa 30,44 giorni, per un mese. Se vi occorre una durata esatta, usate la modalità che esprime tutto in giorni, ore, minuti e secondi, senza anni né mesi.

Sì, è prevista anche la forma con la lettera W, per esempio «P2W» per due settimane. Va però ricordato che nella norma ISO 8601 quella notazione è un'abbreviazione autonoma e non si può combinare con anni, mesi, giorni o con la parte oraria.

Se il testo non comincia con «P», se le unità non seguono l'ordine anni, mesi, giorni e poi ore, minuti, secondi, oppure se la durata è vuota perché tutte le unità sono omesse, lo strumento la considera non convertibile e mostra un messaggio d'errore.
Tool-kun

A proposito — perché nel mondo dell'informatica esiste un formato apposito per le durate

La norma ISO 8601 è nota soprattutto come lo standard che uniforma a livello internazionale il modo di scrivere date e orari, ma al suo interno definisce anche una notazione per le durate, cioè per la lunghezza dell'intervallo fra due istanti. Mentre una data indica un punto preciso — il «quando» — una durata è un'informazione differenziale: il «quanto». Le due cose si somigliano, ma la natura dell'informazione trattata è del tutto diversa, e proprio per distinguerle si è predisposta una notazione apposita, che comincia con la lettera «P».

Uno dei motivi per cui la notazione delle durate è tanto apprezzata nella pratica è che previene gli errori d'interpretazione delle unità quando i dati passano da un programma all'altro. Se la risposta di un'interfaccia contiene soltanto il numero 30, chi la riceve non può sapere se si tratti di secondi o di minuti senza consultare la documentazione. Con «PT30S», invece, valore e unità sono racchiusi nella stessa stringa e, purché l'analisi sintattica sia corretta, non c'è modo di fraintendere.

È per la stessa ragione che l'interfaccia dati di YouTube restituisce la durata dei filmati in formato ISO 8601: la stringa «PT4M13S» individua senza ambiguità un filmato di quattro minuti e tredici secondi. Anche le interfacce di AWS e Google Cloud adottano talvolta questo formato per limiti di tempo e scadenze: quando lo incontrate in un file di configurazione YAML o in una risposta JSON, convertirlo qui in secondi aiuta a farsi un'idea concreta della lunghezza.

La norma presenta però una proprietà curiosa: le durate che comprendono anni e mesi non hanno una lunghezza assoluta. La stessa notazione «P1Y» può corrispondere a 365 o a 366 giorni a seconda che si attraversi o meno un anno bisestile. Anche il fatto che questo strumento debba ricorrere a valori approssimati nelle conversioni con anni e mesi discende, in fondo, da quest'ambiguità della specifica.