Mam następujący kod:Konwersja struct tm do 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";
wyjście jest:
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)
Moje pytanie brzmi dlaczego mktime()
zmienić wartości time
i dlaczego jest przerobiona time_t
nie równa się mojej daty wprowadzenia. Spodziewam się, że dane wyjściowe to data wyrażona w sekundach od 1970 (27.05.2010 = 1330905600).
góry dzięki
Jakie były wartości 'time.tm_hour',' time.tm_min' i 'time.tm_sec' przed wywołaniem' mktime'? – Wintermute
@Wintermute Dodałem informacje. – aQuip
Err ... wziąłeś niezainicjowaną strukturę, zainicjowałeś trzy z wielu pól, następnie "przekonwertowałeś" (trzy znaczące wartości plus dużo śmieci), a następnie odczytałeś pola i zastanawiasz się, dlaczego dostajesz głównie śmieci? ;-) GIGO, naprawdę. – DevSolar