Hello, I’m Vinch

And this is my website.

Les formats de date dans les flux RSS 2.0 et Atom 1.0

02/28/07

This post is more than 10 years old. It might not reflect my current skills and convictions.

Si vous avez déjà essayé de créer de toutes pièces vos flux de syndication, il y a certainement un point sur lequel vous avez du coincer à un certain moment : le format des dates.

Malheureusement, il existe plusieurs normes pour le format des dates, parfois très similaires. Je vous en présenterai trois : ISO 8601, RFC 822 (RSS 2.0), RFC 3339 (Atom 1.0).

ISO 8601

ISO 8601 est une norme internationale spécifiant la représentation numérique de la date et de l’heure. Cette notation est particulièrement destinée à éviter tout risque de confusion dans les communications internationales dû au grand nombre de notations nationales différentes.

En gros, ça évite de dévoir se poser des questions quand on est en présence d’une date comme celle-ci : 02/03/04. 2 mars 2004 ? 3 février 2004 ? 4 mars 2002 ? etc.

ISO 8601 résout ce type d’ambiguités en précisant une notation unique pour la date et l’heure. Elle se présente de cette façon :

* l’année exprimée sur 4 chiffres
* le mois exprimé sur 2 chiffres (de 01 à 12)
* le jour du mois (ou quantième) est exprimé sur 2 chiffres (de 01 à 31)
* la lettre T majuscule pour séparer la date de l’heure
* l’heure exprimée sur 2 chiffres (de 00 à 24)
* les minutes exprimées sur 2 chiffres (de 00 à 59)
* les secondes exprimées sur 2 chiffres (de 00 à 60)
* le fuseau horaire exprimé en heures minutes ou via un Z majuscule si on est sur le méridien Zéro

Dans le format étendu de la norme, le signes moins (-) est utilisé pour séparer les éléments de la date et le signe deux-points (:) est utilisé pour séparer les éléments de l’heure.

Exemple : 2007-02-19T10:26:13+01:00

Remarques :

* l’heure 24 est possible mais dans ce cas les minutes et les secondes doivent être à 00. T24:00:00 correspond en fait à T00:00:00 du jour suivant.
* la seconde 60 est possible car il est parfois nécessaire d’ajouter ou enlever une seconde intercalaire avant certains mois.
* vous vous demandez certainement pourquoi le fuseau horaire s’exprime en heures et en minutes au lieu d’en heures uniquement. En fait, certains pays ont choisi une heure ne correspondant pas à un fuseau originel (Afghanistan à +4:30 ou Iran à +3:30).

En savoir plus :

* Page officielle de la norme ISO 8601
* ISO 8601 sur Wikipédia

RFC 822

Le format de date RFC 822 est le format que l’on retrouve dans les flux RSS 2.0.

Pour rappel, les request for comments (RFC, littéralement demande de commentaires) sont une série de documents et normes concernant l’Internet, commencées en 1969. Peu de RFC sont des standards, mais tous les standards de l’Internet sont enregistrés en tant que RFC.

Le titre de la norme RFC 822 est « Standard for ARPA Internet Text Messages ». En effet, il faut savoir que cette norme n’est pas uniquement une norme concernant les dates, mais une norme définissant le format des messages textes transitant sur le réseau (ou emails), dans laquelle on trouve une partie consacrée aux dates.

Le format d’une date dans le RFC 822 se présente de cette manière :

* le jour de la semaine, exprimé en 3 lettres (Mon, Tue, Wed, Thu, Fri, Sat ou Sun) suivi d’une virgule
* le jour du mois, exprimé sur 2 chiffres (de 01 à 31)
* le mois, exprimé en 3 lettres (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov ou Dec)
* l’année, exprimée sur 4 chiffres
* l’heure exprimée sur 2 chiffres (de 00 à 23)
* les minutes exprimées sur 2 chiffres (de 00 à 59)
* les secondes exprimées sur 2 chiffres (de 00 à 59)
* le fuseau horaire exprimé en heures minutes ou via un Z majuscule (si on est sur le méridien Zéro) ou via un code en 3 lettres (GMT, CET, etc.)

Exemple : Wed, 02 Oct 2002 08:00:00 EST

RFC 3339

Le format de date RFC 3339 est le format que l’on retrouve dans les flux Atom (RFC 4287).

Le titre de la norme est « Date and Time on the Internet: Timestamps » Il est fortement similaire au standard ISO 8601, à quelques différences près (on dit que RFC 3339 définit un profil ISO 8601). La plus grande différence entre les deux normes est que le RFC 3339 oblige la date à être exprimée de façon complète (à la seconde près) alors que ce n’est pas nécessaire dans le standard ISO 8601. Elle supprime aussi la confusion liée à l’heure 24.

Exemple : 2007-02-19T10:26:13+01:00

Dans un prochain billet, je vous proposerai des squelettes de templates PHP/Smarty pour vos flux RSS 2.0 et Atom 1.0…

3 comments

Leave a comment