IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Parser une date avec un format


Sujet :

C++

  1. #1
    Membre régulier Avatar de titoine1978
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2005
    Messages : 132
    Points : 90
    Points
    90
    Par défaut Parser une date avec un format
    Bonjour,

    Il faut que je traite un fichier comportant beaucoup d'enregistrements ayant le même format de date le plus rapidement. Le format des dates peut différer d'un fichier à l'autre, mais est connu.

    Je cherche donc un morceau de code qui pourrait me parser une string qui contient une date, en fournissant le format de cette date. J'ai chercher sans rien trouver

    Dans les MFC il y a bien le COLEDateTime:arseDateTime, mais on ne fournit que la string et pas le format. J'ai bien peur que cette fonction soit une horreur en performance si il y a des tests sur tous les formats (il peut en plus y en avoir des non supportés).

    Je programmerai ca si il n'existe rien de tout fait...a ce moment quelqu'un aurait une idée de la technique ?

    Merci.

  2. #2
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Il y a des choses dans boost::date-time. Je ne sais pas si ça convient pour tes formats de date.

    http://www.boost.org/doc/html/date_time/date_time_io.html#date_time.io_objects

  3. #3
    Membre éclairé
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Février 2004
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Février 2004
    Messages : 644
    Points : 785
    Points
    785
    Par défaut
    Si tu as le format représentant une date, amuse toi avec boost::regex ou un équivalent.

  4. #4
    Membre averti Avatar de vdumont
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 510
    Points : 369
    Points
    369
    Par défaut
    Woah je cherchais justement une implémentation des regex sous C++, je crois que je vais regarder du coté de boost

  5. #5
    Membre éclairé
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Février 2004
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Février 2004
    Messages : 644
    Points : 785
    Points
    785
    Par défaut
    bon amusement avec bjam :p

  6. #6
    Membre averti Avatar de vdumont
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 510
    Points : 369
    Points
    369
    Par défaut
    bjam :

  7. #7
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    C'est l'outil genre make pour compiler boost. Et comme tous les outils de ce genre, il peut sembler un peu rébarbatif. De plus, la doc de boost a souvent été un peu limite sur ce genre de chose de base que tous les boosteur savent faire depuis le berceau. Ils se sont améliorés je trouve.

  8. #8
    Membre averti Avatar de vdumont
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 510
    Points : 369
    Points
    369
    Par défaut
    Ok merci, je vais en arracher alors?

  9. #9
    Membre éclairé
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Février 2004
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Février 2004
    Messages : 644
    Points : 785
    Points
    785
    Par défaut
    tout dépend de ton compilo :p et de l'os.

    Il y a un tableau sur le site de boost reprennant des stats sur les compilos et les lib boost qui sont compilables, etc...

  10. #10
    Membre régulier Avatar de titoine1978
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2005
    Messages : 132
    Points : 90
    Points
    90
    Par défaut
    Bonjour et merci pour vos réponses.
    J'hésitais a installer boost...je sens que je vais galerer et en plus si il faut utiliser les expressions régulières
    J'essaierai de regarder ca quand même (sinon j'utiliserai COLEDateTime...je testerai les perfs voir si c'est la cata).

  11. #11
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Ce n'est pas si complexe. Quel compilateur as-tu ? Si c'est un visual C++, je te conseille de faire l'install dans un "Visual Studio 2005 Command Prompt", ça simplifie bien les choses.

    Si tu as des soucis, n'hésite pas à demander de l'aide ici. Boost en vaut largement la peine.

  12. #12
    Membre régulier Avatar de titoine1978
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2005
    Messages : 132
    Points : 90
    Points
    90
    Par défaut
    J'ai VC7.
    L'installation à l'air de fonctionner. J'ai pu acceder aux .hpp depuis visual, et là je compile les librairies (je croise les doigts, ca a l'air de génerer tout ce qu'il faut .obj .dll etc. en debug, et release )

  13. #13
    Membre régulier Avatar de titoine1978
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2005
    Messages : 132
    Points : 90
    Points
    90
    Par défaut
    A priori boost s'est installé correctement. Dans les options de projets de VC j'ai mis les chemins des includes et des librairies.
    Intellisense reconnait bien boost (boost:: m'affiche bien tout ce qui est disponible )

    Cependant je n'arrive pas a le faire fonctionner correctement.
    Voila un exemple tout simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #include "boost/date_time/gregorian/gregorian.hpp"
     
    int main()
    {
    	using namespace boost::gregorian;
    	date d;
    	return 0;
    }
    Le compilo me sort cette erreur en release :
    C:\Program Files\Microsoft Visual Studio .NET\Vc7\include\ostream(639): fatal error C1076: limite du compilateur : la limite du tas interne a été atteinte ; utilisez /Zm pour spécifier une limite plus élevée

    et celle la en debug :
    c:\Program Files\Microsoft Visual Studio .NET\Vc7\include\xloctime(539): error C2061: erreur de syntaxe : identificateur '_DebugHeapTag'
    c:\Program Files\Microsoft Visual Studio .NET\Vc7\include\xloctime(539): error C2143: erreur de syntaxe : absence de ';' avant ')'

    En retirant tout ce qui fait référence à boost, ca compile.

    Si quelqu'un avait un exemple clair en entier (ce que je n'ai pas trouvé dans la doc), qui marche chez lui, je suis preneur pour l'essayer.

  14. #14
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Ton programme compile et se lance sans problèmes chez moi (vc8.0)...

  15. #15
    Membre régulier Avatar de titoine1978
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2005
    Messages : 132
    Points : 90
    Points
    90
    Par défaut
    Merci d'avoir tester.

    Je n'ai pas trouver d'infos interessantes sur google pour le _DebugHeapTag.
    Peut-être une incompatibilité avec Vc7. Je garde mon répertoire boost pour tester quand j'aurai plus de temps, car ca a l'air vraiment puissant.

    Sinon j'ai trouvé une fonction intéressante qui n'existe que sous Linux, en C, strptime() qui parse une string en fonction d'un format, c'est le contraire d'un strftime(). Le source est dispo.

  16. #16
    Membre régulier Avatar de titoine1978
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2005
    Messages : 132
    Points : 90
    Points
    90
    Par défaut
    Pour la petite histoire :

    J'ai integrer le strptime() à Vc7. Ca marche très bien.
    Les performances sont excellentes,parse de 100 000 dates :
    strptime() -> 26ms
    COleDateTime -> 765ms

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] CONCATENER avec une date au bon format
    Par Philippe608 dans le forum Excel
    Réponses: 9
    Dernier message: 02/02/2024, 11h38
  2. parser une date avec un simpledateformat
    Par olivier57b dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 22/01/2012, 16h23
  3. format d'une date avec mysqladmin
    Par phpines dans le forum MySQL
    Réponses: 2
    Dernier message: 16/03/2009, 10h00
  4. Formater une date avec 23:59:59
    Par Caro dans le forum Firebird
    Réponses: 4
    Dernier message: 29/08/2007, 13h06
  5. [Debutant] Afficher une date avec un format short
    Par lilou77 dans le forum BIRT
    Réponses: 12
    Dernier message: 11/01/2007, 09h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo