Passa al contenuto principale

1. Introduzione

La Concise Binary Object Representation (CBOR) [RFC7049] prevede lo scambio di dati strutturati senza la necessità di uno schema pre-concordato. La RFC 7049 definisce un set di base di tipi di dati, nonché un meccanismo di tagging che consente di estendere il set di tipi di dati supportati tramite un registro IANA.

Questa specifica definisce un tag CBOR per una stringa di testo che rappresenta una data senza orario. La stringa di testo contrassegnata è rappresentata come specificato dalla produzione "full-date" della RFC 3339 [RFC3339]. Secondo la RFC 3339, questo rappresenta una data all'interno del calendario gregoriano.

Questa specifica definisce anche un tag CBOR per un numero intero che rappresenta una data senza orario. L'intero contrassegnato è un valore non firmato o negativo che indica il numero di giorni dalla data del calendario gregoriano 1970-01-01. Come nota di implementazione, questo valore ha un offset costante dal valore della Data Giuliana Modificata (che è definito dallo Smithsonian Astrophysical Observatory come il numero di giorni dal 17 novembre 1858); questo valore è la Data Giuliana Modificata meno 40587.

Si noti che poiché entrambi i tag sono per date senza orari, orari del giorno, fusi orari e secondi intercalari non sono applicabili a questi valori. Questi tag sono entrambi per rappresentazioni di date del calendario gregoriano.

1.1. Date del calendario

Le date del calendario sono utilizzate per numerosi casi d'uso umano, come segnare le date di eventi significativi. Ad esempio, John Lennon è nato il 9 ottobre 1940 e morì l'8 dicembre 1980. Uno di questi casi d'uso sono le patenti di guida, che in genere includono una data di nascita. Le date utilizzate in questa specifica utilizzano il calendario gregoriano, così come quelle nella RFC 3339 [RFC3339]. I fusi orari e gli orari effettivi di questi eventi non sono intenzionalmente rappresentati nella data del calendario.

L'epoca scelta per il secondo tag, che rappresenta i giorni dalla data del calendario gregoriano 1970-01-01, è correlata all'epoca temporale IEEE Std 1003.1, edizione 2013 [POSIX.1] 1970-01-01T00:00:00Z UTC solo nella misura in cui entrambe contengono la data 1970-01-01. Ciò non deve essere interpretato come un'indicazione che le date che utilizzano questo tag rappresentano un'ora specifica del giorno e/o un fuso orario.

Il giorno della settimana (domenica, lunedì, martedì, ecc.) non è esplicitamente rappresentato in nessuno di questi formati di data. Tuttavia, algoritmi deterministici che esulano dall'ambito di questa specifica possono essere utilizzati per derivare il giorno della settimana nel calendario gregoriano dalle date rappresentate in entrambi questi formati.

1.1.1. Esempi di rappresentazioni di date

Questa tabella contiene rappresentazioni di esempio per le date utilizzando entrambi i tag.

DataTag 1004Tag 100
9 ottobre 1940"1940-10-09"-10676
8 dicembre 1980"1980-12-08"3994

Tabella 1

1.2. Confronto delle date

Il confronto delle date nel formato "full-date" può essere effettuato tramite il normale confronto di stringhe, poiché, per progettazione, le cifre che rappresentano la data sono in formato fisso e ordinate dalla più significativa alla meno significativa. Il confronto di date numeriche che rappresentano giorni dal 01/01/1970 può essere effettuato tramite il normale confronto di numeri interi. Il confronto di date in altri formati o utilizzando altri calendari richiede conversioni che esulano dall'ambito di questa specifica.

Si noti che date diverse possono corrispondere allo stesso momento nel tempo, a seconda del fuso orario in cui è stata determinata la data. Ad esempio, in molti momenti della giornata, una teleconferenza che si svolge in una data particolare in Giappone si svolgerà contemporaneamente alla data precedente alle Hawaii; in molti momenti della giornata, il venerdì del Giappone corrisponde al giovedì delle Hawaii.

1.3. Confronto di date e valori data/ora

Il confronto delle date con i valori data/ora, che rappresentano un momento particolare nel tempo, esula dall'ambito di questa specifica. Detto questo, se una data viene aumentata con un fuso orario e un'ora del giorno, è possibile determinare un valore data/ora specifico e confrontare tale valore data/ora con altri diventa possibile. Ad esempio, se si dovesse aumentare la data di nascita di John Lennon del 9 ottobre 1940 con l'ora del giorno e il fuso orario della sua nascita, allora sarebbe possibile derivare una data/ora in cui è nato che potrebbe essere confrontata con altri valori data/ora.