2017-08-30 1 views
0

J'essaye d'analyser une chaîne de date et d'heure en utilisant std :: get_time dans Visual Studio 2012. La chaîne de temps semble analyser correctement mais pas la chaîne de date. Je veux éventuellement convertir la chaîne de date en un entier pour la comparaison. Je suis conscient que je peux l'analyser manuellement, mais je me demandais s'il me manquait quelque chose concernant l'utilisation de std :: get_time. Voici un exemple de code avec sortie.std :: get_time ne fonctionne pas à ce jour dans Visual Studio 2012

struct std::tm time, date; 
std::istringstream ss("09/02/2017 23:19:12"); 
std::string ss1, ss2; 
ss >> ss1 >> ss2; 
std::stringstream iss1(ss1), iss2(ss2); 
iss1 >> std::get_time(&date, "%m/%d/%Y"); 
iss2 >> std::get_time(&time, "%H:%M:%S"); 
std::cout << date.tm_mon << "/" << date.tm_mday << "/" << date.tm_year << ", " << time.tm_hour << ":" << time.tm_min << ":" << time.tm_sec << "\n"; 

La sortie je reçois est

8/2/117, 23:19:12 
+0

donc vous imprimez la représentation interne de la date. Quel est votre problème ici? –

+0

Comment obtenir la date réelle (mois, jour et année) en utilisant std :: get_time? – GreenEye

Répondre

1

C'est la façon dont il fonctionne!

struct tm stocke les mois comme 0-11 mais les jours comme 1-31. Et l'année est le nombre d'années écoulées depuis 1900.

http://en.cppreference.com/w/c/chrono/tm