ho il seguente codice:Converti struct tm per time_t
struct tm time;
strptime("27052010", "%d%m%Y", &time);
cout << "sec: " << time.tm_sec << "\n";
cout << "min: " << time.tm_min << "\n";
cout << "hour: " << time.tm_hour << "\n";
cout << "day: " << time.tm_mday << "\n";
cout << "month: " << (time.tm_mon + 1) << "\n";
cout << "year: " << time.tm_year << "\n";
time_t t = mktime(&time);
cout << "sec: " << time.tm_sec << "\n";
cout << "min: " << time.tm_min << "\n";
cout << "hour: " << time.tm_hour << "\n";
cout << "day: " << time.tm_mday << "\n";
cout << "month: " << (time.tm_mon + 1) << "\n";
cout << "year: " << time.tm_year << "\n";
cout << "time: " << t << "\n";
L'output è:
sec: 1474116832
min: 32767
hour: 4238231
day: 27
month: 5
year: 110
sec: 52
min: 0
hour: 6
day: 2
month: 9
year: 640
time: 18008625652 (Fri, 02 Sep 2540 04:00:52 GMT)
mia domanda è perché fa mktime()
modificare i valori di time
e perché è il convertito time_t
non uguale alla mia data di inserimento. Mi aspetto che l'output sia la data espressa in secondi dal 1970 (27.05.2010 = 1330905600).
Grazie in anticipo
Quali erano i valori di 'time.tm_hour',' time.tm_min' e 'time.tm_sec' prima della chiamata a' mktime'? – Wintermute
@Wintermute Ho aggiunto le informazioni. – aQuip
Err ... hai preso una struttura non inizializzata, inizializzato tre dei suoi molti campi, poi "convertito" (tre valori significativi più un sacco di spazzatura), poi leggi i campi indietro e ti chiedi perché stai ricevendo la maggior parte dei rifiuti? ;-) GIGO, davvero. – DevSolar