#winapi #systemtime
#winapi #systemtime
Вопрос:
Например, мой код выглядит следующим образом.
void main()
{
SYSTEMTIME LocalTime_Start = { 0 };
GetLocalTime( amp;LocalTime_Start );
SYSTEMTIME LocalTime_End = { 0 };
// Some program Statements
GetLocalTime( amp;LocalTime_End );
// Now i want difference of two i.e.
// can i do as following
SYSTEMTIME localTime_diff = LocalTime_End - LocalTime_Start;
// guys please let me know how to achieve that asap...thanks a lot in advance
}
Ответ №1:
Преобразуйте обе структуры SYSTEMTIME в FILETIME с помощью
FILTETIME ft;
::SystemTimeToFileTime(amp;sysTime, amp;ft);
Преобразуйте FILETIME в ULONGLONG с помощью:
ULARGE_INTEGER uli;
uli.LowPart = ft.dwLowDateTime ;
uli.HighPart= ft.dwHighDateTime;
ULONGLONG uft= uli.QuadPart;
Вычтите ULONGLONGs, чтобы получить разницу во времени в гектонаносеках
Комментарии:
1. В данном случае неприменимо, но SystemTimeToFileTime завершится ошибкой, если входное SYSTEMTIME представляет НУЛЕВОЕ время (то есть все его члены равны 0).