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 CloudFormation e nei dati strutturati di Schema.org.

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)

Che cos'è la notazione delle durate ISO 8601

La notazione delle durate ISO 8601 è uno standard internazionale che esprime la «lunghezza» fra due istanti in un'unica stringa, come «P3Y6M4DT12H30M5S». Mentre una data-ora indica un istante preciso, cioè «quando», una durata esprime una differenza, cioè «quanto», e per questo esiste una notazione dedicata che comincia con «P», distinta dai formati delle marche temporali.

Chi sviluppa software incontra spesso questa notazione: l'interfaccia dati di YouTube indica così la durata dei filmati, AWS CloudFormation la usa per i limiti di tempo, e i dati strutturati di Schema.org e gli allarmi di iCalendar la impiegano per durate e anticipi. Questo strumento converte all'istante fra stringhe di durata e secondi complessivi, così potete verificare esattamente quanto tempo rappresenta un valore.

Come convertire durate ISO 8601 e secondi

  1. Incollate una stringa di durata per convertirla in secondi Inserite una stringa di durata ISO 8601 come «PT1H30M» nel campo superiore: compaiono automaticamente il totale in secondi e il dettaglio per unità.
  2. Provate il valore di esempio Fate clic su «Inserisci un esempio» per caricare un caso che combina anni, mesi, giorni, ore, minuti e secondi, e vedere subito la conversione all'opera.
  3. Inserite i secondi per convertirli in una stringa di durata Digitate nel campo inferiore il numero complessivo di secondi da convertire: viene generata la stringa di durata ISO 8601 corrispondente.
  4. Scegliete una modalità di conversione Selezionate «anni/mesi/giorni» per una notazione compatta e leggibile, oppure «solo giorni/ore/minuti/secondi» per un risultato esatto senza approssimazioni di calendario.
  5. Copiate il risultato Copiate il totale di secondi, minuti, ore o giorni mostrato, oppure la stringa di durata generata, direttamente nella richiesta API o nel file di configurazione.

Consigli per sfruttarlo al meglio

  • 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.
  • I limiti di tempo di AWS Lambda, API Gateway e Step Functions sono numeri interi in secondi o millisecondi, non durate ISO 8601. In AWS la notazione di durata compare per esempio nella CreationPolicy di CloudFormation, e lo strumento torna comodo per verificarne i valori.
  • L'elemento itunes:duration dei flussi RSS dei podcast si scrive in secondi (oppure in ore:minuti:secondi), non nella notazione di durata ISO 8601. Lo strumento è utile quando occorre convertire in secondi un valore ISO 8601 prima di inserirlo.

Quando torna utile convertire le durate ISO 8601

Analizzare le risposte dell'interfaccia dati di YouTube

Incollate un valore come «PT4M13S» proveniente da contentDetails.duration per vedere subito quanti minuti e secondi dura un filmato.

Individuare errori nelle configurazioni di AWS e dei servizi in rete

I limiti di tempo di CreationPolicy (Timeout di ResourceSignal) e WaitCondition in CloudFormation si scrivono nella notazione di durata ISO 8601, come «PT15M»: potete verificare a quanti secondi od ore corrispondono davvero.

Controllare le durate nei dati strutturati (Schema.org)

La proprietà duration di Schema.org e i campi cookTime e prepTime delle ricette usano la notazione ISO 8601, come «PT1H30M»: potete verificare che il valore del vostro markup corrisponda alla durata voluta.

Lavorare con allarmi e durate di iCalendar (RFC 5545)

Le proprietà TRIGGER (per esempio -PT15M) e DURATION di iCalendar usano durate derivate dalla norma ISO 8601, che potete comporre partendo da un numero di secondi. Tenete presente che i promemoria dell'interfaccia di Google Calendar si indicano invece come numero intero di minuti.

Creare casi di prova per un analizzatore personalizzato

Se sviluppate un vostro analizzatore di durate, usate questo strumento per verificare il numero corretto di secondi di stringhe note e impiegarlo come valore atteso nei test.

Glossario della durata ISO 8601

ISO 8601
Uno standard internazionale che definisce come rappresentare date, orari e durate. Oltre alla notazione delle date come «2026-09-16», definisce anche la notazione delle durate trattata da questo strumento.
Durata
Un valore che rappresenta la lunghezza di tempo fra due istanti. A differenza di una data-ora, che indica un istante preciso, una durata porta l'informazione di quanto tempo trascorre.
Notazione PnYnMnDTnHnMnS
Il formato di base delle stringhe di durata ISO 8601: anni (Y), mesi (M) e giorni (D) dopo la «P», seguiti da ore (H), minuti (M) e secondi (S) dopo la «T», includendo solo le unità necessarie.
Marca temporale
Un valore che rappresenta un istante preciso. A differenza di una durata, che è una differenza, una marca temporale esprime una posizione assoluta: «quando» è avvenuto qualcosa.
RFC 3339
Una specifica, basata sulla norma ISO 8601, per esprimere date e orari su internet. Il testo normativo regola soltanto le marche temporali; le durate compaiono solo nell'appendice A (Appendix A), di carattere informativo, che trascrive in ABNF la sintassi della ISO 8601.
Notazione con le settimane (PnW)
Un'abbreviazione come «P2W» che esprime una durata soltanto in settimane. Secondo la norma ISO 8601, questa forma autonoma non si può combinare con le componenti di anno, mese, giorno o con la parte oraria.

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, il limite di tempo della CreationPolicy di AWS CloudFormation, le proprietà duration e cookTime di Schema.org e i valori TRIGGER e DURATION di iCalendar (RFC 5545). Fra i linguaggi di programmazione, le classi Duration e Period di Java e la libreria isodate di Python sanno leggere e generare questa notazione.

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 alcune configurazioni in rete, come il limite di tempo della CreationPolicy di AWS CloudFormation, adottano questo formato: 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.