Ich habe Probleme mit der Datenverwaltung in C ++ (VS 2008).
Laut den MSDN-Spezifikationen steht time_t
:
Die Anzahl der Sekunden seit dem 1. Januar 1970, 0:00 UTC
Deshalb habe ich diesen Code geschrieben:
%Vor%Es scheint um 1 Stunde verschoben zu sein (d. h. die Nullzeit ist der 1. Januar 1970, 1:00 UTC).
Anfangs dachte ich, das Problem könnte durch das DayLightSaving-Flag entstehen, aber es ändert sich nicht, wenn ich es ändere.
Mache ich etwas falsch?
Vielen Dank im Voraus
P.S. Theoretisch mag ich den Wert der Nullzeit nicht beachten, weil es nur eine Referenzzeit ist.
Aber ich muss mich über den Wert sicher sein, denn ich portiere den Code in eine andere Sprache und muss genau die gleichen Ergebnisse erzielen.
Hier ist die Lösung, dank Josh Kelley Antwort
%Vor% mktime
nimmt eine struct tm
, gibt eine lokale Zeit und gibt die Anzahl der Sekunden seit dem 1. Januar 1970, 0:00 UTC zurück. Daher gibt Ihr GetDate(1970,1,1,0,0,0);
-Aufruf 0 zurück, wenn Ihre lokale Zeitzone UTC ist, aber andere Werte für andere Zeitzonen.
Bearbeiten: Versuchen Sie für eine UTC-Version von mktime
oder GetDate
Folgendes (ungetestet):
getenv
auf, um den aktuellen Wert zu speichern der TZ-Umgebungsvariablen (falls vorhanden). putenv
auf, um die TZ-Umgebung zu ändern Variable zu "UTC". _tzset
auf, um Ihre Änderungen zu aktivieren. mktime
. _tzset
erneut aufrufen. Tags und Links c c++ visual-studio-2008 time