HANDLE hFind = FindFirstFile("E:\\record.txt",&ffd); 
::GetFileTime(hFind,&CreationTime,&LastAccessTime,&LastWriteTime);
::FileTimeToLocalFileTime(&LastWriteTime,&localfiletime);
::FileTimeToSystemTime(&localfiletime,&systemtime);
读取后发现年月日等时间和系统显示的时间不对应。
为什么?

解决方案 »

  1.   

    ffd.ftLastWriteTime就是文件的修改时间...
      

  2.   

    下,你的思路应该是没错的。看看返回值,都是BOOL型,看看是不是有不成功的转换
      

  3.   

    SYSTEMTIME stUTC, stLocal; HANDLE hFind = FindFirstFile( "E:\\record.txt", &ffd );

    if( FileTimeToSystemTime( &(ffd.ftLastWriteTime), &stUTC ))
    {
    if( SystemTimeToTzSpecificLocalTime( NULL, &stUTC, &stLocal ))
    {
    szTime.Format( _T("%04d%02d%02d-%02d%02d%02d")
    ,stLocal.wYear, stLocal.wMonth,stLocal.wDay, stLocal.wHour, stLocal.wMinute,stLocal.wSecond );
    }
    }
      

  4.   


    SYSTEMTIME systemtime, localfiletime; 
            WIN32_FIND_DATA ffd;
            HANDLE hFind = FindFirstFile( _T("E:\\record.txt"), &ffd ); 
            CString szTime;
            FileTimeToSystemTime( &(ffd.ftLastWriteTime), &systemtime); 
             
            if( SystemTimeToTzSpecificLocalTime(NULL, &systemtime, &localfiletime )) 
            { 
                szTime.Format( _T("%04d%02d%02d %02d:%02d%:02d") 
                        ,localfiletime.wYear, 
                        localfiletime.wMonth,
                        localfiletime.wDay, 
                        localfiletime.wHour, 
                        localfiletime.wMinute,
                        localfiletime.wSecond 
                        ); 
                        
                } 
             szTime随你用什么格式都行
      

  5.   

    获取SYSTEMTIME后,看是否有时差的区别,年月日应该都跟系统一样了...