如题!

解决方案 »

  1.   

    CTime t1(sys_time1);
    CTime t2(sys_time2);CTimeSpan ts = t2 - t1;UINT nTotalDays = ts.GetTotalHours() / 24;
      

  2.   

    Sorry,审题不清楚,没看到Win32下void FileTimeToTime_t( FILETIME ft, time_t *t )
    {
    LONGLONG ll; ll = Int32x32To64( ft.dwHighDateTime, ft.dwLowDateTime ); *t = ((LONGLONG)(ll - 116444736000000000)) >> 32;
    }DWORD GetDiffDays( SYSTEMTIME t1, SYSTEMTIME t2 )
    {
    FILETIME fTime1;
    FILETIME fTime2; time_t tt1;
    time_t tt2; SystemTimeToFileTime( t1, &fTime1 );
    FileTimeToTime_t( fTime1, &tt1 ); SystemTimeToFileTime( t2, &fTime2 );
    FileTimeToTime_t( fTime2, &tt2 ); time_t difftime = tt2 - tt1; return difftime / (24*3600L);// 除以每天24小时3600秒
    }
      

  3.   

    以上这段代码临时写的,没有经过测试是否正确函数FileTimeToTime_t参考MSDN提供的函数:
    void TimetToFileTime( time_t t, LPFILETIME pft )
    {
        LONGLONG ll = Int32x32To64(t, 10000000) + 116444736000000000;
        pft->dwLowDateTime = (DWORD) ll;
        pft->dwHighDateTime = ll >>32;
    }
    反向改写而成,因为搞不清楚LONGLONG高位LONG是前是后,所以改写的可能错误,请楼主测试后将正确的结果公布,不胜感激:)
      

  4.   

    谢谢 modena:
    没有找到解决办法以后,我直接用了time_t就可以了。
    不知道有没有好的其他的方法。
      

  5.   

    我提供的代码因为未经测试,所以是错误的,下面是我经过测试正确的代码:void FileTimeToTime_t( FILETIME ft, time_t *t )
    {
    LONGLONG ll; ULARGE_INTEGER ui;
    ui.LowPart = ft.dwLowDateTime;
    ui.HighPart = ft.dwHighDateTime; ll = ft.dwHighDateTime << 32 + ft.dwLowDateTime; *t = ((LONGLONG)(ui.QuadPart - 116444736000000000) / 10000000);
    }DWORD GetDiffDays( SYSTEMTIME t1, SYSTEMTIME t2 )
    {
    FILETIME fTime1;
    FILETIME fTime2; time_t tt1;
    time_t tt2; SystemTimeToFileTime( &t1, &fTime1 );
    SystemTimeToFileTime( &t2, &fTime2 ); FileTimeToTime_t( fTime1, &tt1 );
    FileTimeToTime_t( fTime2, &tt2 ); time_t difftime = tt2 - tt1; return difftime / (24*3600L);// 除以每天24小时3600秒
    }