Lo standard internazionale ISO 8601 specifica la rappresentazione digitale della data e dell'ora , rispettivamente in base al calendario gregoriano e al sistema orario a 24 ore . Questa notazione, creata nel 1988, è particolarmente intesa a evitare ogni rischio di confusione nelle comunicazioni internazionali a causa del gran numero di diverse notazioni nazionali. Ha anche molti vantaggi per l' uso del computer rispetto ad altre notazioni.
Esistono sei livelli di granularità in questo formato, a seconda dell'applicazione. Per questo motivo è possibile omettere alcuni elementi.
Esempi:
Tuttavia, va notato che l'organizzazione internazionale per la standardizzazione ( ISO 8601) dissipa ogni confusione stabilendo un formato riconosciuto a livello internazionale per la rappresentazione della data: 1977-04-22 .
La data ISO corrente: |
---|
2021-05-04 |
L'ora ISO corrente [ aggiornamento ] : |
14:21: 13Z |
La data e l'ora ISO correnti: |
04/05/2021T14: 21: 13Z |
o : |
2021-W18-2T14: 21: 13Z |
La prima edizione della ISO 8601 è stata pubblicata nel 1988. Ha sostituito e unificato diversi standard ISO relativi a diversi aspetti della notazione di data e ora (standard ISO 2014, 2015, 2711, 3307 e 4031). Questo standard internazionale è stato aggiornato nel 2000 e poi nel 2004 e nel 2019 è stato suddiviso in 2 parti: ISO 8601-1: 2019 (regole di base) e 8601-2: 2019 (estensioni).
La versione del 1989 dello standard ISO è stata adottata dal sistema di standardizzazione francese con il riferimento NF EN 28601: 1992 . Questo standard francese è stato cancellato il7 ottobre 2011. Devono invece essere utilizzate le edizioni ISO 2019.
La notazione numerica dalla più estesa alla più precisa (aaaa-mm-gg) è stata introdotta dallo standard ISO 2014: 1976; la numerazione delle settimane secondo ISO 2015: 1976. Entrambi sono integrati nello standard ISO 8601.
Il comitato tecnico del TC 154 si occupa del mantenimento della norma ISO 8601.
Gli elementi si susseguono in ordine crescente di precisione. Quindi, il meno preciso, l' anno , viene prima (su 4 cifre), seguito dal mese (2 cifre, da "01" a "12") e dalla data (da "01" a "31"). Ogni elemento è separato da quello precedente da un trattino "-". La data è basata sul calendario gregoriano . Pertanto, se fosse necessario rappresentare anni prima dell'attuazione di questo calendario (prima del 1582-12-20 in Francia), un metodo di conteggio tra le parti che si scambiano informazioni dovrebbe essere concordato in anticipo.
Viene quindi indicata l'ora del giorno, che inizia con la lettera T (per l' ora , l'ora del giorno in inglese), seguita dai seguenti elementi, sempre ordinati per precisione crescente: ore (da '00' a '24 ') , minuti (da "00" a "59") quindi secondi (da "00" a "60") utilizzando i due punti ":" come separatore. Questo può essere seguito da una virgola "," quindi da decimali di secondo, in una quantità necessaria per la precisione richiesta (esempio: "T15: 23: 56.9854"). A volte incontriamo un punto invece di una virgola, soprattutto tra gli anglofoni; lo standard tollera questo uso ma consiglia la virgola.
Osservazioni
Per tutti i formati accettati nello standard ISO 8601, è possibile specificare il fuso orario . Il segno di inizio è positivo (+) quando l'ora locale è in anticipo rispetto all'ora universale (UTC) (fusi orari a est del meridiano del tempo medio di Greenwich: fusi orari dell'Europa centrale, dell'Africa centrale e dell'Africa centrale. Est, Asia, Pacifico occidentale e centrale ). Negativo (-) altrimenti (fusi orari di alcuni paesi dell'Europa occidentale o dell'Africa occidentale, delle Americhe, del Pacifico orientale). Esistono tre modi per indicare questo fuso orario:
Se l'ora è in UTC, è necessario aggiungere una Z dopo l'ora e senza spazi. Quindi 09:30 UTC è rappresentato 09: 30Z o 0930Z .
Fuso orario da UTCPer evitare confusione, questo è davvero un offset espresso da tempo UTC (e non verso ). Il che ha senso poiché è un'indicazione del fuso orario. Quindi T09: 00: 00 + 01: 00 corrisponde a T08: 00: 00Z (9 ore nel fuso orario con un'ora in più rispetto a UTC quindi 8 ore in UTC). 09: 00 + 01: 00 non rappresenta l'aggiunta di 09:00 e 01:00, ma piuttosto questa aggiunta: 09:00 = UTC +01: 00 .
Di seguito, le seguenti notazioni vengono utilizzate per simboleggiare i formati presentati:
Nel caso della notazione delle frazioni (su ore, minuti o secondi), il separatore decimale è una virgola o un punto, la virgola è il segno preferito.
I seguenti formati possono quindi essere utilizzati per indicare:
È possibile rappresentare le date fornendo l'anno e il numero del giorno dell'anno. Quindi un numero di 3 cifre da "001" a "365" (o anche "366" se necessario). Esempio: 1970-033 è il 33 ° giorno dell'anno 1970. In altre parole, il2 febbraio 1970. Oppure, se l'anno è bisestile, ad esempio 2008-155 è il 155 ° giorno dell'anno 2008. In altre parole, il3 giugno 2008. Questa notazione è distintiva grazie alle 3 cifre dopo l'anno. (Il mese da solo richiederebbe solo due cifre. Il mese e una data richiederebbero quattro cifre in notazione abbreviata .)
L' industria si è abituata a contare le settimane dell'anno (settimana 1, 2, ... 52 o addirittura 53) per organizzarsi e pianificare la propria produzione. In pratica, non tutti seguono necessariamente la stessa convenzione di numerazione (ad esempio, il Canada e gli Stati Uniti considerano la domenica anziché il lunedì come primo giorno della settimana). Questo standard ISO ha definito rigorosamente una regola di numerazione, riconosciuta a livello internazionale e comunemente utilizzata:
Osservazioni e conseguenze:
Lo standard prevede anche di scrivere una data successiva alla sua settimana. È necessario iniziare con la lettera W (per settimana , settimana in inglese) seguita dal numero della settimana a due cifre (ed eventualmente dal numero del giorno da 1 a 7). Esempi:
Il calcolo automatizzato del numero di settimane in informatica rimane semplice ma comunque non banale, a causa delle settimane cruciali tra ogni anno. Questa riflessione merita quindi di essere condivisa.
In molti linguaggi di programmazione per computer , gli strumenti contano i giorni della settimana da domenica (valore zero ), quindi 1 per lunedì e 6 per sabato. In molte parti del mondo, la settimana inizia di domenica e, matematicamente (modulo 7), 0 e 7 sono gli stessi nei test. Per la visualizzazione, questo diventa un caso speciale da affrontare. A volte c'è una funzione che fornisce direttamente una numerazione standardizzata.
Per calcolare il numero ISO della settimana contenente una data "D", esistono diversi algoritmi. Questo può essere ad esempio:
Alcuni algoritmi utilizzano eccezioni scarsamente giustificabili o addirittura restituiscono valori errati per determinate date. Il vantaggio dell'algoritmo precedente è quello di essere affidabile, pur sfruttando le funzioni generalmente disponibili (il conteggio degli anni bisestili o il numero di giorni è già implementato).
Se conosciamo D il giorno corrispondente a una data (da D = 1 per lunedì, a D = 7 per domenica), adattando le funzioni esistenti se necessario, allora il giovedì della stessa settimana viene individuato (D-4) più giorni prima (o successivo se negativo). Il lunedì associato è (G-1) giorni prima.
È possibile indicare solo gli elementi utili. Ad esempio, possiamo indicare il mese di febbraio 2003 da: 2003-02 , senza dover indicare un giorno o un'ora specifici. In generale, è possibile rimuovere qualsiasi informazione non necessaria (ad esempio la data se viene utilizzata solo l'ora). Che dà ad esempio: T23: 45 .
In ogni dato contesto, le notazioni dovrebbero essere tutte abbreviate nello stesso modo. Quindi tutto sullo stesso numero di caratteri. Tutto con le stesse informazioni. Altrimenti, perdiamo il vantaggio di questa standardizzazione per coerenza e facilità di ordinamento.
Altro esempio, se è indicato il fuso orario, non è sempre necessario indicare i minuti (spesso non necessari). Quindi T23: 05 + 05: 00 può essere abbreviato T23: 05 + 05 o anche T2305 + 05 secondo quanto segue.
Infine, se è richiesta una dimensione compatta a scapito della leggibilità, è possibile rimuovere alcuni separatori (trattino o due punti). Tutti loro (tutti i trattini e / o due punti) dovrebbero quindi essere rimossi per evitare confusione. Una scrittura estrapolata dal suo contesto deve rimanere comprensibile e si deve in particolare identificare se si tratta di un'ora o di una data. (2005 è un anno, T2005 o 20:05 sono ore)
Ad esempio, queste notazioni sono equivalenti:
20040204 = 2004-02-04 = 2004-W06-3 = 2004W063Un'ultima scorciatoia consiste nel sostituire gli elementi troncati con un trattino "-". È usato raramente. Tuttavia, potrebbe essere necessario evitare confusione. Omettendo l'anno, scriveremmo il 2 dicembre come:
" --1202 ". Potremmo ridurlo a " -1202 " senza confusione con il solo " 1202 " che rappresenterebbe l'anno 1202.
2003 --- 12 o 2003-12 rappresenterebbero il 12 di qualsiasi mese nel 2003, senza confusione con il 2003-12 che rappresenterebbe il dicembre 2003.
È anche possibile indicare una durata (misura di un tempo trascorso) o un intervallo di tempo (tra due date precise). Per fare questo useremo la barra " / " per separatore.
Intervallo tra due dateLa barra separa la data di inizio e la data di fine. Se cambia solo l'ultimo elemento, è possibile non riscrivere l'inizio. Qualche esempio :
Una durata rappresenta una quantità di tempo in assoluto, senza iniziare in un momento preciso. Devi iniziare a scrivere con la lettera P (per Periodo in inglese). Esempio:
P18Y9M4DT11H9M8S che rappresenta una (lunga) durata di 18 anni, 9 mesi, 4 giorni, 11 ore, 9 minuti e 8 secondi. Notiamo in questo esempio l'uso delle iniziali inglesi per separare gli elementi ( Y spighe , M onths , D ays , H ours , M inutes e S econds ). Notiamo sempre la presenza della T che separa i giorni dalle ore. Ciò consente di risolvere l'ambiguità tra P1M (1 mese) e PT1M (un minuto). Potremmo anche contare in settimane riutilizzando la lettera "W": P3W rappresenta ad esempio una durata di 3 settimane.
Se il contesto richiedeva di distinguere tra durate positive e negative, è sufficiente aggiungere il segno "+" o "-" all'inizio della voce.
La conversione da una rappresentazione della durata a un'altra dipende dal contesto dell'applicazione di quella durata. La norma fornisce come definizione [2.2.14] dell'anno "durata di 365 o 366 giorni di calendario a seconda dell'inizio e / o della fine del corrispondente intervallo di tempo nell'anno solare specifico". La definizione [2.2.16] di un anno comune è " anno civile ... che ha 365 giorni" e la definizione [2.2.17] di un anno bisestile è " anno civile ... che ha 366 giorni". Lo stesso vale per la durata del mese , la cui definizione [2.2.12] è " durata di 28, 29, 30 o 31 giorni di calendario a seconda dell'inizio e / o della fine dell'intervallo di tempo corrispondente. Nel calendario specifico mese.
Esempi:
Il tempo tra 1 ° gennaio 2015 alle 10 e il 16 gennaio 2016alle 21 si potrebbe scrivere P12M15DT11H (12 mesi, 15 giorni e 11 ore), nulla nella norma lo vieta, che impone solo che "i valori espressi non devono superare i punti di rendicontazione di 12 mesi, 30 giorni, 24 ore, 60 minuti e 60 secondi ". Tuttavia, se questa rappresentazione della durata deve essere scambiata tra sistemi informatici, il valore P1Y5DT11H deve essere preferito a P12M5DT11H , che potrebbe apparire per errore in programmi in cui sarebbero stati codificati controlli più drastici di quanto imposto dallo standard.
Un terminale e la durataInfine, possiamo combinare le due notazioni e indicare un periodo in base alla sua data di inizio e alla sua durata. Esempio:
2004-12-02 / P3D è l'intervallo di tempo di una durata di 3 giorni a partire dal 2 dicembre 2004.
Oppure, al contrario, possiamo prima indicare la durata e poi la data finale ("PT1H / 2006-01-01" rappresenta l'ora che precede il passaggio a Capodanno nel 2006).
Ricorrenza di una durataSe la durata è ripetitivo, uno sopra la notazione con la lettera R . Esempio: R / PT01H significa "ogni ora".
La barra "/" consente un'aggiunta dopo la R per indicare (facoltativamente) un numero di ripetizioni. R5 / PT01: 30 significa quindi "cinque occorrenze, distanziate di un'ora e mezza".
La durata tra ogni ricorrenza può essere indicata con tutti i metodi sopra menzionati. (Indicando due date o utilizzando il simbolo P per intervalli o durate; con o senza indicazione di una data di inizio o di fine.)
R12 / 1985-04-12T23: 20: 50 / P1Y2M significherebbe "12 occorrenze separate l'una dall'altra da un anno e due mesi, a partire dalla prima il 12 aprile 1985 alle 23:20 e cinquanta secondi"
I vantaggi di questa standardizzazione sono i seguenti: