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.
Euh... lapropose 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.
Partager