получение разницы между двумя переменными SYSTEMTIME

#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).