[c++] RFC822 date parsing

Hello,

Je bosse sur une appli MFC et j’ai une série de dates au format RFC822 que je dois classer chronologiquement. Je dois donc les parser, mais je ne parviens pas à trouver une fonction qui fasse ça. J’ai essayé COleDateTime::ParseDateTime mais ça ne fonctionne pas. Quelqu’un a une idée ?

Pour info, le format est le suivant : “zo, 18 jun 2006 04:12:11 CEST”… eh oui “zo” pour “zondag”, vivent les locales. Les bouts de code que j’ai pu trouver à gauche et à droite et qui font du parsing de ce genre de trucs sont tous prévus pour l’anglais. D’accord, je peux en modifier un, mais il doit bien exister quelque chose de standard, non ?

Encore une remarque, il m’est impossible d’utiliser .NET, l’appli doit tourner sur un win98 out-of-the-box.

Euh, serieux, qu’est-ce t’en a a foutre, du nom du jour ? OK, y’a le nom du mois derriere, mais est-il localisé, lui ?

Normalement, oui (pas facile à vérifier, vu qu’on est en juin… juni, june). Note que bon, je pourrais simplement chercher si y’a une virgule, faire sauter tout ce qui se trouve devant (nom du jour) plus la virgule et jusqu’au prochain caractère qui n’est pas un espace. Et puis faire un remplacement de chaîne sur le nom du mois. Je n’aurais plus qu’à passer la date à une fonction de conversion us. Mais y’a-t-il une telle fonction quelque part dans windows ?

Rahlala, pourquoi autant de standards pour un truc si simple à la base ?

Pas de C++/CLI hein? Ca serait trop simple?

Ah bah non pas de CLI, faut que ça soit viril, faut que ça sente la sueur et que ça fasse mal. Si y’a pas au moins une douzaine de QueryInterface ça va pas. Plus sérieusement, je n’ai que C++ & MFC7 sous la main. Ceci dit, il semblerait que RFC822 implique que ce soit en anglais, donc c’est même pas standard. Là pour l’instant ça tourne avec dix lignes de parsing brutal, c’est élégant comme un clown en tutu, mais ça marche. Si entretemps quelqu’un voit l’ombre d’une solution générique, faut pas hésiter.

moi j’auais pensé à un petit flex (avec bison au besoin) mais je sais pas comment ça se passe sous Windows 98. Et puis c’est un peu sortir la grosse artillerie …
(en meme temps, si t’as d’autres parsing à faire dans ton programme flex c’est vraiment pas mal)

Attention, vu qu’il y a 4 chiffres, c’est déjà plus la RFC2822 que tu regardes. Effectivement la traduction du day-of-week va contre la norme, mais s’il s’agit de parser pour trier, je sauterai simplement cette zone en trimant après la virgule pour reconstituer une date GMT (la zone est importante en fait pour retourner au référentiel unique). Essaie de faire des tests pour voir s’ils n’ont pas eu la très mauvaise idée de traduire aussi les mois. B)

Bon, j’arrive un peu après la bataille…:smiley: