0

我想提取特定文件的日期值,并将其与 Visual C++ 中的修改日期和创建日期进行比较。

我已经看到我可以提取Date CreatedDate Modified ,但我对Date一无所知。

我用一个有问题的软件更改了一些文件,唯一仍然有有效时间的列是日期一列。我怎样才能提取它?

我正在使用 Windows 7 x64。

在这里,我只看到了st_atime、st_ctime、st_mtime :http : //msdn.microsoft.com/en-us/library/14h5k7ff.aspx

4

1 回答 1

2

Windows 为每个文件或文件夹存储三个时间戳:

  • 创建时间(首次创建项目的时间/日期)
  • 上次修改时间(上次写入文件的时间)
  • 上次访问时间(上次访问文件的时间)

有多种方法可以读取这些时间戳,但使用本机 Win32 API,您可以执行以下操作:

LPCWSTR pszFileName = L"c:\\path\\to\\myfile.txt";
WIN32_FIND_DATA wfd;
HANDLE hFind = FindFirstFile(pszFileName, &wfd);
if (hFind != INVALID_HANDLE_VALUE)
{
    FindClose(hFind);
    // timestamps can now be found at:
    // wfd.ftCreationTime
    // wfd.ftLastAccessTime
    // wfd.ftLastWriteTime
}

您可以使用诸如FileTimeToSystemTime()FILETIME值(仅是自特定日期以来的滴答计数)转换为更可用的SYSTEMTIME结构等功能,从而为您提供日、月、年、小时、分钟等。

注意:“上次修改时间”也会针对文件夹和文件进行更新,并指示上次直接在该文件夹中修改文件的时间。对文件夹时间戳的更改不会传播到父文件夹。

注意 2:“上次访问时间”或多或少已被弃用,并且在较新版本的 Windows 中默认禁用。您可以使用注册表设置启用它。

于 2013-08-11T07:35:06.467 回答