大家都知道,MFC中CTime这个类,而这个类对于年份有限制的:1970--2038。当然COleDateTime这个类可以解决这个问题。
但是,有下面一个问题:我要修改一些文件的更新时间,而MFC中提供了CFileStatus这个类,但是该类中的一些成员为CTime型,我如果要将文件的更新时间改为2038年以后,该怎么办?如果不用CFileStatus,用什么好呢?请指教!

解决方案 »

  1.   

    但是你如果先把系统时间调到2038年以后,然后打开文件,更改后保存,文件的更新时间就会为2038年以后,说明文件系统是支持的。我的问题实际上也就是:除了CFileStatus这个类,还有什么办法修改文件的更新时间。
      

  2.   

    先创建一个SYSTEMTIME,将其中变量赋值为要改的时间,注意该时间指的时格林威治时间,有8小时的时差.
    再创建一个FILETIME,使用SystemTimeToFileTime将SYSTEMTIME转换为FILETIME.
    再用CreateFile打开该文件,用SetFileTime设置文件时间.
    具体函数参数可参考MSDN.
      

  3.   

    创建一个SYSTEMTIME后,把其中变量赋值为要改的时间,再用SystemTimeToFileTime将SYSTEMTIME转换为FILETIME,然后再用LocalFileTimeToFileTime可以弥补8小时的时差。
    但是在设置秒的时候,有时候会有1秒钟的误差,比如你设为59时会自动进位。(设置为其它数字也可能会出现误差),不知道这是什么原因?
      

  4.   

    systemtime 和filetime有什么区别?
    为啥直接改过去又系统又支持,系统不是用filetime表示的?
      

  5.   

    一秒钟差距的原因在这里:)http://www.csdn.net/cnshare/soft/10/10830.shtm结贴!!!