1. Einleitung
Die Concise Binary Object Representation (CBOR) [RFC7049] ermöglicht den Austausch strukturierter Daten ohne die Anforderung eines vorab vereinbarten Schemas. RFC 7049 definiert einen grundlegenden Satz von Datentypen sowie einen Tagging-Mechanismus, der die Erweiterung des Satzes der unterstützten Datentypen über eine IANA-Registry ermöglicht.
Diese Spezifikation definiert ein CBOR-Tag für eine Textzeichenfolge, die ein Datum ohne Uhrzeit darstellt. Die getaggte Textzeichenfolge wird wie in der Produktion "full-date" von RFC 3339 [RFC3339] spezifiziert dargestellt. Gemäß RFC 3339 stellt dies ein Datum innerhalb des gregorianischen Kalenders dar.
Diese Spezifikation definiert auch ein CBOR-Tag für eine Ganzzahl, die ein Datum ohne Uhrzeit darstellt. Die getaggte Ganzzahl ist ein vorzeichenloser oder negativer Wert, der die Anzahl der Tage seit dem gregorianischen Kalenderdatum 1970-01-01 angibt. Als Implementierungshinweis hat dieser Wert einen konstanten Offset zum modifizierten julianischen Datumswert (der vom Smithsonian Astrophysical Observatory als die Anzahl der Tage seit dem 17. November 1858 definiert wird); dieser Wert ist das modifizierte julianische Datum minus 40587.
Beachten Sie, dass, da beide Tags für Daten ohne Uhrzeiten bestimmt sind, Tageszeiten, Zeitzonen und Schaltsekunden für diese Werte nicht anwendbar sind. Diese Tags dienen beide zur Darstellung von gregorianischen Kalenderdaten.
1.1. Kalenderdaten
Kalenderdaten werden für zahlreiche menschliche Anwendungsfälle verwendet, wie z. B. das Markieren der Daten bedeutender Ereignisse. Zum Beispiel wurde John Lennon am 9. Oktober 1940 geboren und starb am 8. Dezember 1980. Ein solcher Anwendungsfall sind Führerscheine, die typischerweise ein Geburtsdatum enthalten. Die in dieser Spezifikation verwendeten Daten verwenden den gregorianischen Kalender, ebenso wie die in RFC 3339 [RFC3339]. Die Zeitzonen und tatsächlichen Zeiten dieser Ereignisse werden im Kalenderdatum absichtlich nicht dargestellt.
Die für das zweite Tag gewählte Epoche, die Tage seit dem gregorianischen Kalenderdatum 1970-01-01 darstellt, steht im Zusammenhang mit der Zeitepoche 1970-01-01T00:00:00Z UTC der IEEE Std 1003.1, Ausgabe 2013 [POSIX.1], nur insofern, als beide das Datum 1970-01-01 enthalten. Dies sollte nicht so ausgelegt werden, dass Daten, die dieses Tag verwenden, entweder eine bestimmte Tageszeit und/oder Zeitzone darstellen.
Der Wochentag (Sonntag, Montag, Dienstag usw.) wird in keinem dieser Datumsformate explizit dargestellt. Deterministische Algorithmen, die über den Rahmen dieser Spezifikation hinausgehen, können jedoch verwendet werden, um den Wochentag im gregorianischen Kalender aus Daten abzuleiten, die in beiden dieser Formate dargestellt werden.
1.1.1. Beispiele für Datumsdarstellungen
Diese Tabelle enthält Beispieldarstellungen für Daten unter Verwendung beider Tags.
| Datum | Tag 1004 | Tag 100 |
|---|---|---|
| 9. Oktober 1940 | "1940-10-09" | -10676 |
| 8. Dezember 1980 | "1980-12-08" | 3994 |
Tabelle 1
1.2. Vergleichen von Daten
Der Vergleich von Daten im "full-date"-Format kann durch normalen Zeichenfolgenvergleich erfolgen, da die Ziffern, die das Datum darstellen, konstruktionsbedingt ein festes Format haben und vom höchstwertigen zum niedrigstwertigen geordnet sind. Der Vergleich von numerischen Daten, die Tage seit dem 01.01.1970 darstellen, kann durch normalen Ganzzahlvergleich durchgeführt werden. Der Vergleich von Daten in anderen Formaten oder unter Verwendung anderer Kalender erfordert Konvertierungen, die über den Rahmen dieser Spezifikation hinausgehen.
Beachten Sie, dass unterschiedliche Daten demselben Zeitpunkt entsprechen können, abhängig von der Zeitzone, in der das Datum bestimmt wurde. Zum Beispiel findet zu vielen Tageszeiten eine Telefonkonferenz, die an einem bestimmten Datum in Japan stattfindet, gleichzeitig am vorherigen Datum in Hawaii statt; zu vielen Tageszeiten entspricht der Freitag in Japan dem Donnerstag in Hawaii.
1.3. Vergleichen von Daten und Datums-/Zeitwerten
Der Vergleich von Daten mit Datums-/Zeitwerten, die einen bestimmten Zeitpunkt darstellen, liegt außerhalb des Rahmens dieser Spezifikation. Wenn jedoch ein Datum um eine Zeitzone und eine Tageszeit ergänzt wird, kann ein bestimmter Datums-/Zeitwert bestimmt werden, und der Vergleich dieses Datums-/Zeitwerts mit anderen wird möglich. Wenn man beispielsweise John Lennons Geburtsdatum, den 9. Oktober 1940, um die Tageszeit und Zeitzone seiner Geburt ergänzen würde, wäre es möglich, ein Datum/eine Uhrzeit abzuleiten, zu der er geboren wurde, die mit anderen Datums-/Zeitwerten verglichen werden könnte.