1. Introduction
La représentation concise d'objets binaires (CBOR) [RFC7049] permet l'échange de données structurées sans exigence de schéma convenu au préalable. La RFC 7049 définit un ensemble de base de types de données, ainsi qu'un mécanisme de balisage qui permet d'étendre l'ensemble des types de données pris en charge via un registre IANA.
Cette spécification définit une balise CBOR pour une chaîne de texte représentant une date sans heure. La chaîne de texte balisée est représentée comme spécifié par la production "full-date" de la RFC 3339 [RFC3339]. Selon la RFC 3339, cela représente une date dans le calendrier grégorien.
Cette spécification définit également une balise CBOR pour un entier représentant une date sans heure. L'entier balisé est une valeur non signée ou négative indiquant le nombre de jours depuis la date du calendrier grégorien 1970-01-01. À titre de note d'implémentation, cette valeur a un décalage constant par rapport à la valeur de la date julienne modifiée (qui est définie par l'Observatoire astrophysique du Smithsonian comme le nombre de jours depuis le 17 novembre 1858) ; cette valeur est la date julienne modifiée moins 40587.
Notez que puisque les deux balises concernent des dates sans heures, les heures de la journée, les fuseaux horaires et les secondes intercalaires ne s'appliquent pas à ces valeurs. Ces balises sont toutes deux destinées aux représentations de dates du calendrier grégorien.
1.1. Dates calendaires
Les dates calendaires sont utilisées pour de nombreux cas d'utilisation humaine, tels que le marquage des dates d'événements importants. Par exemple, John Lennon est né le 9 octobre 1940 et est décédé le 8 décembre 1980. L'un de ces cas d'utilisation est le permis de conduire, qui comprend généralement une date de naissance. Les dates utilisées dans cette spécification utilisent le calendrier grégorien, tout comme celles de la RFC 3339 [RFC3339]. Les fuseaux horaires et les heures réelles de ces événements ne sont intentionnellement pas représentés dans la date calendaire.
L'époque choisie pour la deuxième balise, qui représente les jours depuis la date du calendrier grégorien 1970-01-01, est liée à l'époque temporelle 1970-01-01T00:00:00Z UTC de la norme IEEE Std 1003.1, édition 2013 [POSIX.1] uniquement dans la mesure où les deux contiennent la date 1970-01-01. Cela ne doit pas être interprété comme indiquant que les dates utilisant cette balise représentent une heure spécifique de la journée et/ou un fuseau horaire.
Le jour de la semaine (dimanche, lundi, mardi, etc.) n'est explicitement représenté dans aucun de ces formats de date. Cependant, des algorithmes déterministes qui dépassent le cadre de cette spécification peuvent être utilisés pour dériver le jour de la semaine dans le calendrier grégorien à partir des dates représentées dans ces deux formats.
1.1.1. Exemples de représentations de date
Ce tableau contient des exemples de représentations pour les dates utilisant les deux balises.
| Date | Balise 1004 | Balise 100 |
|---|---|---|
| 9 octobre 1940 | "1940-10-09" | -10676 |
| 8 décembre 1980 | "1980-12-08" | 3994 |
Tableau 1
1.2. Comparaison des dates
La comparaison des dates au format "full-date" peut être effectuée par une comparaison de chaînes normale, car, de par leur conception, les chiffres représentant la date sont dans un format fixe et ordonnés du plus significatif au moins significatif. La comparaison des dates numériques représentant les jours depuis le 01/01/1970 peut être effectuée par une comparaison d'entiers normale. La comparaison de dates dans d'autres formats ou utilisant d'autres calendriers nécessite des conversions qui dépassent le cadre de cette spécification.
Notez que différentes dates peuvent correspondre au même moment dans le temps, selon le fuseau horaire dans lequel la date a été déterminée. Par exemple, à de nombreuses heures de la journée, une conférence téléphonique ayant lieu à une date particulière au Japon aura lieu simultanément à la date précédente à Hawaï ; à de nombreuses heures de la journée, le vendredi au Japon correspond au jeudi à Hawaï.
1.3. Comparaison des dates et des valeurs de date/heure
La comparaison des dates avec des valeurs de date/heure, qui représentent un moment particulier dans le temps, dépasse le cadre de cette spécification. Cela dit, si une date est augmentée d'un fuseau horaire et d'une heure de la journée, une valeur de date/heure spécifique peut être déterminée, et la comparaison de cette valeur de date/heure à d'autres devient possible. Par exemple, si l'on devait augmenter la date de naissance de John Lennon du 9 octobre 1940 avec l'heure de la journée et le fuseau horaire de sa naissance, il serait alors possible de dériver une date/heure à laquelle il est né qui pourrait être comparée à d'autres valeurs de date/heure.