void FileTimeToTime(FILETIME ft,time_t *t)
{
ULONGLONG ll;
ULARGE_INTEGER ui;
ui.LowPart=ft.dwLowDateTime;
ui.HighPart=ft.dwHighDateTime;
ll=(ft.dwHighDateTime << 32) + ft.dwLowDateTime;
*t=((LONGLONG)(ui.QuadPart - 116444736000000000) / 10000000);
}
计算函数:
double GetDiffDays(SYSTEMTIME t1,SYSTEMTIME t2)
{
FILETIME fTime1;
FILETIME fTime2;
//t1.wDayOfWeek=4;
time_t tt1;
time_t tt2;
SystemTimeToFileTime( &t1, &fTime1 );
SystemTimeToFileTime( &t2, &fTime2 );
FileTimeToTime( fTime1, &tt1 );
FileTimeToTime( fTime2, &tt2 );
time_t difftime = tt2 - tt1;
double Differ= (double)difftime / (double)(24*3600L);
return Differ;
}
根据间隔天数求得SYSTEMTIME st1;
void GetSystemTimeByDays(SYSTEMTIME & st1,SYSTEMTIME st2,int ByDays)
{
time_t difftime;
FILETIME fTime1;
FILETIME fTime2;
time_t tt1;
time_t tt2;
SystemTimeToFileTime(&st2,&fTime2);
FileTimeToTime(fTime2,&tt2);
difftime=double(24*3600L)*ByDays;
tt1=tt2-difftime;
FILETIME ft;
LONGLONG ll = Int32x32To64(tt1, 10000000) + 116444736000000000;
ft.dwLowDateTime = (DWORD) ll;
ft.dwHighDateTime = (DWORD)(ll >> 32);
FileTimeToSystemTime( &ft, &st1 );
}