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 :

Manipulations de dates et heures


Sujet :

C++

  1. #1
    Membre régulier Avatar de benj63
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Mai 2002
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 207
    Points : 99
    Points
    99
    Par défaut Manipulations de dates et heures
    Bonjour,

    Je travaille depuis longtemps sous C++ Builder 6, et j'utilise toutes leurs ptites fonctions qui vont bien, du style TDateTime, EncodeDateTime, FormatString, TStringList etc.

    On m'a demandé de convertir un de mes programmes développé sous C++ Builder et tournant sous Windows , sous Unix en C++ (compilé avec g++)... Et forcément c'est l'horreur, ça n'a rien à voir.

    J'ai donc entrepris de recréer les fonctions de C++ Builder qui vont bien, afin de me faciliter la tâche ensuite.

    Je bloque sur les dates et heures. Quelle unité utiliser ? ctime ? Je souhaiterais manipuler les dates comme avec TDateTime : les encoder, les décoder, ajouter ou soustraire des jours etc...

    Quelles fonctions utiliser ? Merci par avance !!

  2. #2
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 150
    Points : 180
    Points
    180
    Par défaut
    A mon avis tu es bon pour creer ta propre classe, d'un autre coté c pas trop long.... Il suffit de coder deux ou trois surcharges d'operateurs et c'est in the pocket !

  3. #3
    Membre régulier Avatar de benj63
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Mai 2002
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 207
    Points : 99
    Points
    99
    Par défaut
    Sous C++ Builder, on peut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    TDateTime une_date;
    une_date = EncodeDateTime(2004,12,14,13,0,0,0);
    String essai = une_date.FormatString("dd/mm/YYYY hh:nn");
    J'ai tenté cela, ça fonctionne à priori :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    struct tm *EncodeDateTime(short annee, short mois, short jour, short heure, short minute, short sec, short msec)
    {
    	struct tm *date;
    	time_t rawtime;
    	time ( &rawtime );
        date = localtime ( &rawtime );
        date->tm_year = annee - 1900;
        date->tm_mon = mois - 1;
        date->tm_mday = jour;
        date->tm_hour = heure;
        date->tm_min = minute;
        date->tm_sec = sec;
    	return date;
    }
     
     
    struct tm *une_date = EncodeDateTime(2004,12,14,12,0,0,0);
    Par contre, pour créer le .FormatString(...), 2 problèmes se posent à moi :

    - faut-il que je recode entièrement la lecture du format ? "YYYY", "mm", "dd"...
    - y'a-t'il une méthode simple pour "surcharger" le struct tm *, pour lui ajouter la fonction FormatString(...) ?

  4. #4
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    salut,

    si tu limites le formatage de la date et de l'heure alors ça peut être assez simple.

    limiter le formatage = offrir un choix limité

    pour la date : dd/mm/yy, dd/mm/yyyy, mm/dd/yy, mm/dd/yyyy

    pour l'heure : hh:nn, hhHnn, hh-nn, hh'/h'nn (ex: 10h00 -> '/h' pour séparateur h)

    dans ce cas tu programmes les cas possibles et ta méthode devient

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tm * FormatString(string formatDate,string formatHeure);
    et si l'utilisateur entre un mauvais format, tu peux par exemple renvoyer le format par défaut (mm/dd/yyyy ou un autre)

  5. #5
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Pour le formatage en chaine, tu as strftime dans la bibliothèque standard. Mais bien mieux : tu as des classes portables toutes faites dans certaines bibiolthèques, comme boost. Ne t'embête pas à tout refaire.

  6. #6
    Membre régulier Avatar de benj63
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Mai 2002
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 207
    Points : 99
    Points
    99
    Par défaut
    Merci pour le lien sur boost !! je ne connaissais pas, je vais regarder ça.

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

Discussions similaires

  1. Manipulation de date et l'heure Excel
    Par yacinew dans le forum Excel
    Réponses: 9
    Dernier message: 18/09/2013, 16h33
  2. manipulation de date et heure
    Par m0ul3sh0t dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 11/08/2008, 10h34
  3. Réponses: 7
    Dernier message: 16/09/2005, 10h14
  4. [JDBC] manipulation des dates/heures en Java
    Par kurkLord dans le forum JDBC
    Réponses: 6
    Dernier message: 09/08/2004, 12h49
  5. Manipuler des dates...
    Par Ti Jen-tsie dans le forum Langage
    Réponses: 4
    Dernier message: 26/06/2003, 11h46

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