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
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
Bonjour,
pour convertir un float vers un string tu peux utiliser ce type de code.
Ensuite à toi de "parser" correctement ta chaîne pour y identifier chaque élément de date, d'heure.
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; }
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)
Euh... la propose bien mieux en C++:
http://cpp.developpez.com/faq/cpp/in...GS_convertform
Après, pour la mise en forme, encore et toujours !!
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(); }
Bonne continuation,
Poukill
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.
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.:
par contre c'est etonnant que tu ne puisses pas recuperer directement un format date à partir de ta base de donnée?
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; }
Peux tu changer les requetes, genre pour pouvoir recuperer directement une chaine de caractère avec la fonction TO_CHAR(madate, "YYYYMMDD") par exemple?
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.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager