Falsche Werte bei Zeitspannenrechnung?
-
Hallo,
ich will für mein Programm eine Funktion schreiben, in der als Wert herausgegeben wird, wieviel Zeit seit dem Programmstart vergangen ist.
Mein Ansatz ist dieser:
GetSystemTime(&sStartTime); FILETIME fStartTime; SYSTEMTIME sAktTime; FILETIME fAktTime; SYSTEMTIME sVergTime; FILETIME fVergTime; CString strZeit; SystemTimeToFileTime(&sStartTime, &fStartTime); GetSystemTime(&sAktTime); SystemTimeToFileTime (&sAktTime, &fAktTime); fVergTime.dwLowDateTime = fAktTime.dwLowDateTime - fStartTime.dwLowDateTime; fVergTime.dwHighDateTime = fAktTime.dwHighDateTime - fStartTime.dwHighDateTime; FileTimeToSystemTime(&fVergTime,&sVergTime); strZeit.Format("%02d Tage %02d:%02d:%02d",sVergTime.wDay,sVergTime.wHour,sVergTime.wMinute,sVergTime.wSecond);Das Problem hierbei ist, dass sVergTime.wDay immer 1 ist...aber es ist doch noch kein Tag vergangen.
Der Wert müsste doch so bei ca. 1 sekunde liegen oder irre ich mich da.
Ich bin im Debugmodus immer mal langsam durchgegangen um verschiedene Werte zu bekommen...
Die Sekunden scheinen zu stimmen, aber es steht immer vorne 1 Tag.Kann mir vllt. jmd. sagen warum das so ist?
MfG,
Thorsten
-
Vielleicht solltest du unterscheiden zwischen "Zeitpunkt" und "Zeitspanne" - SYSTEMTIME und FILETIME speichern eigentlich Zeitpunkte (SYSTEMTIME aufgeteilt in Komponenten, FILETIME als Sekunden seit 1.1.1601) - d.h. deine Zeitdifferenz wird bei der Umwandlung zu "1. Januar 1601 - x:yy Uhr" (da hast du die 1).
(aus dem Grund gibt es in der MFC auch CTime (Zeitpunkt) und CTimeSpan (Zeitspanne) als eigenständige Klassen)
-
Dieser Thread wurde von Moderator/in Jochen Kalmbach aus dem Forum C++/CLI mit .NET in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.