Umgebung: Ubuntu 14.04.Konvertieren von GMT zu lokalen Ergebnissen in einem Jahr Unterschied
Ich versuche, in struct tm
aufgeschlüsselt Zeit in GMT angegeben zu speichern. Hier ist meine C++ Funktion:
void mygmt(int year, int month, int day, int hour, int minute, int second) {
struct tm gmtTime;
memset(&gmtTime, 0, sizeof(struct tm));
gmtTime.tm_mday = day;
gmtTime.tm_mon = month - 1; // 0-based
gmtTime.tm_year = year - 1900;
gmtTime.tm_hour = hour;
gmtTime.tm_min = minute;
gmtTime.tm_sec = second;
gmtTime.tm_zone = "GMT";
char buffer [80];
strftime (buffer,80,"GMT time: %b %d, %G %I:%M:%S %p %Z.", &gmtTime);
puts(buffer);
time_t rawtime = timegm(&gmtTime);
struct tm* timeinfo = localtime (&rawtime);
strftime (buffer,80,"Local time: %b %d, %G %I:%M:%S %p %Z.",timeinfo);
puts(buffer);
}
Hier ist, wie ich es nenne:
// June 11, 2016 23:34:03 (in GMT)
mygmt(2016, 6, 11, 23, 34, 3);
Und hier ist der Ausgang:
GMT time: Jun 11, 2015 11:34:03 PM GMT.
Local time: Jun 11, 2016 04:34:03 PM PDT.
ich Ortszeit erwarten -7 Stunden um von GMT und dieser Teil der Ausgabe scheint richtig zu sein. Was mich verwirrt, ist die Ausgabe für die GMT-Zeit. Es zeigt mir einen Unterschied von einem Jahr von dem Wert, den ich angegeben habe. Wie repariere ich es?
C ist nicht C++ ist nicht C. Wenn Sie als C++ kompilieren, spammen Sie keine Tags. – Olaf