lundi 12 juillet 2004 - Messages

RSS 2.0 / Format des Dates ( RFC822 )

Ayant recu un mail "anonyme" incendiaire m'affirmant qu'il n'existait aucune spécification de date pour le format RSS 2.0 et que je ne disais que des conneries, je me suis dis, ok, voyons si je dis beaucoup de conneries. Prenons les affirmations unes à une.

"qu'il n'existait aucune spécification de date pour le format RSS 2.0" :
Faux, il existe une spécification pour les toutes les dates présentes dans un flux rss 2.0. Comme le dit les spécifications RSS 2.0, toutes les dates doivent être conforme au formatage des dates de la RFC822. L'exemple donné dans les specs RSS 2.0 est  Sat, 07 Sep 2002 09:42:31 GMT.

Voilà ce que dit la RFC822 (traduire en Francais par JLR31130):

date-time  =  [ day "," ] date time  ;  dd mm yy hh:mm:ss zzz
         
day  =  "Mon" / "Tue" / "Wed" / "Thu"/ "Fri" / "Sat" / "Sun"
         
date  =  1*2DIGIT month 2DIGIT  ;  jour mois année
par exemple: 20 Juin 82
         
date  =  1*2DIGIT month 2DIGIT  ;  jour mois année
par exemple: 20 Juin 82
         
month  =  "Jan" / "Feb" / "Mar" / "Apr" / "May" / "Jun" / "Jul" / "Aug" / "Sep" / "Oct" / "Nov" / "Dec"
         
time  =  hour zone  ;  ANSI et militaire
         
hour  =  2DIGIT ":" 2DIGIT [":" 2DIGIT]  ;  00:00:00 - 23:59:59
         
zone  =  "UT" / "GMT"  ;  Temps Universel
         ;  North American : UT
   /  "EST" / "EDT"  ;  Eastern: - 5/ - 4
   /  "CST" / "CDT"  ;  Central: - 6/ - 5
   /  "MST" / "MDT"  ;  Mountain: - 7/ - 6
   /  "PST" / "PDT"  ;  Pacific: - 8/ - 7
   /  1ALPHA  ;  Militaire: Z = UT;
         ;  Militaire: Z = UT;
   /  ( ("+" / "-") 4DIGIT )  ;  heure differencielle locale
         ;  hours+min. (HHMM)

La règle de formatage des dates existe donc bien pour le format rss 2.0, même si j'avous qu'elle n'est pas très pratique, (notamment par rapport au format datetime de la W3C qu'utilise Atom), ce qui pourrait expliquer que  peu de site l'utilise réellement.

Pour la seconde affirmation "que je ne disais que des conneries" :
Faux, je ne dis pas que des conneries (même si j'avous, ca m'arrive souvent (No Comment ... hein)), le paragraphe précédent en étant une preuve.

Sinon pour en revenir au format de date d'Atom (je m'appuye sur les drafts concercant la version 0.3), il doit respecter le format des dates de la W3C.

   Year:
      YYYY (eg 1997)
   Year and month:
      YYYY-MM (eg 1997-07)
   Complete date:
      YYYY-MM-DD (eg 1997-07-16)
   Complete date plus hours and minutes:
      YYYY-MM-DDThh:mmTZD (eg 1997-07-16T19:20+01:00)
   Complete date plus hours, minutes and seconds:
      YYYY-MM-DDThh:mm:ssTZD (eg 1997-07-16T19:20:30+01:00)
   Complete date plus hours, minutes, seconds and a decimal fraction of a
second
      YYYY-MM-DDThh:mm:ss.sTZD (eg 1997-07-16T19:20:30.45+01:00)

where:

     YYYY = four-digit year
     MM   = two-digit month (01=January, etc.)
     DD   = two-digit day of month (01 through 31)
     hh   = two digits of hour (00 through 23) (am/pm NOT allowed)
     mm   = two digits of minute (00 through 59)
     ss   = two digits of second (00 through 59)
     s    = one or more digits representing a decimal fraction of a second
     TZD  = time zone designator (Z or +hh:mm or -hh:mm)

Comme vous l'avez sans doute remarqué, la chaine réprésentant la date semble paraitre "plus barbare", mais elle est beaucoup plus simple à générer dans n'importe quel language.
De plus, la gestion de la localisation, est beaucoup plus aisée, car l'heure est toujours l'heure locale  , la compensation étant indiqué par le Time Zone Designator de facon numérique (Z indiquant qu'il s'agit de l'heure UTC).

Dans ce format, comme l'indique si bien l'exemple de la W3C :

1994-11-05T08:15:30-05:00  =>5 Novembre 1994, 8:15:30, US Eastern Standard Time => 1994-11-05T13:15:30Z  (UTC)

L'heure tournant, il est quasiment 2004-07-12T00:19:00Z, je vous souhaite une bonne journée.

Ps: Pour l'illustre Anonyme, méfies toi, tu es sous Aol, et ton login se trouve dans l'entête du mail ...