ISO 8601 y RFC 3339 semblent être deux formats courants sur le web. Dois-je utiliser l'un plutôt que l'autre ? L'un n'est-il qu'une extension ? Dois-je vraiment m'en soucier à ce point ?
Réponses
Trop de publicités?Est-ce qu'il s'agit d'une simple extension ?
En gros, oui - la RFC 3339 est répertoriée comme un profil de l'ISO 8601. Plus particulièrement, la RFC 3339 spécifie un représentation complète de la date et de l'heure (seules les secondes fractionnelles sont facultatives). La RFC présente également quelques petites différences subtiles. Par exemple, les représentations tronquées des années avec seulement deux chiffres ne sont pas autorisées -- la RFC 3339 exige des années à 4 chiffres, et la RFC n'autorise que l'utilisation d'un caractère de point comme point décimal pour les secondes fractionnées. La RFC autorise également le remplacement du "T" par un espace (ou un autre caractère), alors que la norme n'autorise que son omission (et uniquement en cas d'accord entre toutes les parties utilisant la représentation).
Je ne m'inquiéterais pas trop des différences entre les deux, mais au cas où votre cas d'utilisation les rencontrerait, cela vaudrait la peine d'y jeter un coup d'œil :
Il y a beaucoup de différences entre l'ISO 8601 et le RFC 3339. Voici quelques exemples pour vous donner une idée :
2020-12-09T16:09:53+00:00
est une valeur de date et d'heure qui est conforme aux deux normes.
2020-12-09 16:09:53+00:00
utilise un espace pour séparer la date et l'heure. Ceci est autorisé par la RFC 3339 mais pas par la norme ISO 8601.
2020-12-09T16:09:53-00:00
spécifie un zéro négatif dans le décalage temporel. Ceci est autorisé par la RFC 3339 mais pas par la norme ISO 8601.
20201209T160953Z
omet les traits d'union et les deux-points. Ceci est autorisé par la norme ISO 8601 mais pas par la RFC 3339.
La norme ISO 8601 permet des choses comme des dates ordinales telles que 2020-344
qui représente le 344e jour de l'année 2020. La RFC 3339 ne le permet pas.
Pour vos questions :
Est-ce qu'il s'agit d'une simple extension ?
Non. Comme indiqué ci-dessus, chaque norme supporte des variations syntaxiques non supportées par l'autre norme. Ainsi, une syntaxe n'est pas un sur-ensemble ou une extension de l'autre.
Dois-je utiliser l'un plutôt que l'autre ?
Bien sûr, cela dépend de votre scénario. Une stratégie générale sûre consiste à générer des chaînes de date et d'heure qui sont valables pour les deux normes.
Une autre bonne stratégie générale consiste à utiliser une bibliothèque standard existante pour l'analyse et le formatage des chaînes de date et d'heure et à ne pas écrire d'implémentations personnalisées, sauf si vous traitez un scénario véritablement personnalisé.
Est-ce que je dois vraiment m'en soucier à ce point ?
C'est à vous de voir. La plupart des développeurs habituels qui traitent des chaînes de date et d'heure devraient avoir une compréhension de haut niveau mais n'ont pas besoin de se plonger dans les détails.
- Réponses précédentes
- Plus de réponses