getFileTime始终返回01/01/1601

时间:2013-06-19 11:23:35

标签: visual-studio visual-c++ date time msdn

  HANDLE f = CreateFile(filepath,GENERIC_ALL,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
          FILETIME create, access, write;

          GetFileTime(f,&create,&access,&write);
          std::cout << "debug " << std::endl;
          SYSTEMTIME s;
          FileTimeToSystemTime(&create,&s);
          displayTime(s);

在此代码中,我正在尝试获取文件并显示其创建/上次访问/上次修改时间。所以我得到一个FILETIME并将其转换为SYSTEMTIME并显示它。

问题,该剧目中的所有文件都具有相同的日期:01/01/1601。 我知道在文件系统中,“timestamp”是从01/01/1601计算出来的,但我不明白我今天为我的测试创建的文件是从这一天开始的。

1 个答案:

答案 0 :(得分:2)

参数OPEN_EXISTING表示仅打开现有文件。它不会创建文件,这解释了为什么修改时间是单元化的。

使用CREATE_ALWAYS或类似代码。

请参阅http://msdn.microsoft.com/en-us/library/windows/desktop/aa363858(v=vs.85).aspx