【问题标题】:getting difference between two SYSTEMTIME variable获得两个 SYSTEMTIME 变量之间的差异
【发布时间】:2011-04-26 09:55:33
【问题描述】:

例如我的代码如下。

void main()

{

       SYSTEMTIME LocalTime_Start = { 0 };

        GetLocalTime( &LocalTime_Start );

        SYSTEMTIME LocalTime_End = { 0 };
        // Some program Statements

         GetLocalTime( &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
}

【问题讨论】:

    标签: winapi systemtime


    【解决方案1】:

    使用

    将两个 SYSTEMTIME 结构转换为 FILETIME
    FILTETIME ft;
    ::SystemTimeToFileTime(&sysTime, &ft);
    

    使用以下方法将 FILETIME 转换为 ULONGLONG:

    ULARGE_INTEGER uli;
    uli.LowPart = ft.dwLowDateTime ;
    uli.HighPart= ft.dwHighDateTime;
    ULONGLONG uft= uli.QuadPart;
    

    减去 ULONGLONG 得到 HectoNanoSec 的时差

    【讨论】:

    • 在这种情况下不适用,但如果输入 SYSTEMTIME 表示零时间(即其所有成员均为 0),则 SystemTimeToFileTime 将失败。
    猜你喜欢
    • 2012-01-31
    • 2020-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多