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 :

conversion float ou double en date/heure


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 45
    Points : 25
    Points
    25
    Par défaut conversion float ou double en date/heure
    Bonjour,

    quelle est la façon la plus rapide et simple pour convertir un float/double en une chaine formattée de type date/heure en C++

    Merci d'avance

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 126
    Points : 149
    Points
    149
    Par défaut
    Bonjour,

    pour convertir un float vers un string tu peux utiliser ce type de code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    std::string DoubleToString(double n)
    {
    	char s[255];
    	sprintf(s,"%f",n);
    	return s;
    }
    Ensuite à toi de "parser" correctement ta chaîne pour y identifier chaque élément de date, d'heure.

    A+,
    B.
    Un ordinateur fait au bas mot 1 million d'opérations à la seconde, mais il n'a que ça à penser, aussi. (brèves de comptoirs, JM.Gourio)


  3. #3
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut
    Euh... la propose bien mieux en C++:
    http://cpp.developpez.com/faq/cpp/in...GS_convertform

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #include <sstream>  
     
    template<typename T>
    std::string to_string( const T & Value )
    {
        // utiliser un flux de sortie pour créer la chaîne
        std::ostringstream oss;
        // écrire la valeur dans le flux
        oss << Value;
        // renvoyer une string
        return oss.str();
    }
    Après, pour la mise en forme, encore et toujours !!

    Bonne continuation,

    Poukill

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 45
    Points : 25
    Points
    25
    Par défaut
    Merci mais je me suis peut-être mal exprimé.

    Je reçois d'une base de données des tonnes de données en format double contenant date et heure en format classique (jour depuis 1/1/70 dans la partie entière, puis heure/minute/seconde dans la partie décimale).

    Je cherche justement à parser/convertir le plus efficacement.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Février 2003
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 224
    Points : 185
    Points
    185
    Par défaut
    Utilise ptime de boost, ca devrait faire l'affaire.

    http://www.boost.org/doc/libs/1_35_0...osix_time.html

    http://www.boost.org/doc/libs/1_35_0...e_time_io.html

    exemple d'utilisation des facets de boost tirer d'un bout de code.:
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    /*
    ** Sets a Date in a cell
    */
    std::string DefaultCug::QuickSetDate(boost::posix_time::ptime time) {
        boost::posix_time::time_facet * outputFacet = new boost::posix_time::time_facet();
        boost::posix_time::time_input_facet * inputFacet = new boost::posix_time::time_input_facet();
        inputFacet->format("%d/%m/%Y");
        outputFacet->format("%d/%m/%Y");
        std::stringstream ss;
        ss.imbue(std::locale(std::locale::classic(), outputFacet));
        ss.imbue(std::locale(ss.getloc(), inputFacet));
     
        ss << time;
     
        return ss.str();
    }
     
    /*
    ** Gets a Date from a cell
    */
    boost::posix_time::ptime DefaultCug::QuickGetDate(std::string str) {
        boost::posix_time::time_facet * outputFacet = new boost::posix_time::time_facet();
        boost::posix_time::time_input_facet * inputFacet = new boost::posix_time::time_input_facet();
        inputFacet->format("%d/%m/%Y");
        outputFacet->format("%d/%m/%Y");
        std::stringstream ss;
        ss.imbue(std::locale(std::locale::classic(), outputFacet));
        ss.imbue(std::locale(ss.getloc(), inputFacet));
     
        ss << str;
     
        boost::posix_time::ptime time;
        ss >> time;
        return time;
    }
    par contre c'est etonnant que tu ne puisses pas recuperer directement un format date à partir de ta base de donnée?
    Peux tu changer les requetes, genre pour pouvoir recuperer directement une chaine de caractère avec la fonction TO_CHAR(madate, "YYYYMMDD") par exemple?

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 45
    Points : 25
    Points
    25
    Par défaut
    Merci,

    Non, pas de format date (DLL propriétaire de séries temporelles, bourse etc)

    Pour le moment, j'en reste à mes conversions faites maison (84600 secondes dans 24 h etc) même si ça me paraît lourd et pas forcément hyper performant.

Discussions similaires

  1. Problème conversion float vers double
    Par jhenaff dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 27/01/2006, 10h39
  2. Conversion d'un tableau de float en double ?
    Par alex6891 dans le forum C++
    Réponses: 5
    Dernier message: 05/01/2006, 06h04
  3. [datetime] conversion d'une chaîne en une date + heure
    Par jean-jacques varvenne dans le forum Général Python
    Réponses: 2
    Dernier message: 07/04/2005, 10h43
  4. [CR] pb (concaténation/Conversion/Addition) sur date/heure
    Par marvel dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 20/12/2004, 15h31
  5. Conversion date ->heures
    Par bdkiller dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 02/09/2004, 16h08

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