取得两个 FILETIME 的时间差

如果为SYSTEMTIME,可以通过SystemTimeToFileTime先转到FILETIME

#define NOMINMAX 

#include <algorithm> 
#include <windows.h> 
 
SYSTEMTIME systemtime_difference(SYSTEMTIME const& st1, SYSTEMTIME const& st2) 
{ 
    FILETIME ft1; 
    SystemTimeToFileTime(&st1, &ft1); 
    ULARGE_INTEGER const u1 = { ft1.dwLowDateTime, ft1.dwHighDateTime }; 
 
    FILETIME ft2; 
    SystemTimeToFileTime(&st2, &ft2); 
    ULARGE_INTEGER const u2 = { ft2.dwLowDateTime, ft2.dwHighDateTime }; 
 
    ULARGE_INTEGER u3; 
    u3.QuadPart = std::max(u1.QuadPart, u2.QuadPart) - std::min(u1.QuadPart, u2.QuadPart); 
    FILETIME const ft3 = { u3.LowPart, u3.HighPart }; 
 
    SYSTEMTIME st3; 
    FileTimeToSystemTime(&ft3, &st3); 
    // FILETIME's starting point is 1601-01-01 
    st3.wYear -= 1601; 
    st3.wMonth -= 1; 
    st3.wDay -= 1; 
    st3.wDayOfWeek = 0; // useless for this purpose, make it always 0 so it's always ignored 
    return st3; 
} 
 
int main() 
{ 
    SYSTEMTIME const st1 = { 2008, 10, 3, 15, 6, 5, 31, 12 }; 
    SYSTEMTIME const st2 = { 2009, 12, 0, 27, 10, 7, 59, 56 }; 
    SYSTEMTIME st3 = systemtime_difference(st1, st2); 
 
    return 0; 
} 


感谢: http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/fe975619-5e19-45e0-82cd-797ff7745712

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值