我想提取特定文件的日期 值,并将其与 Visual C++ 中的修改日期和创建日期进行比较。
我看到我可以提取创建日期和修改日期,但我对日期一无所知。
我用有缺陷的软件更改了一些文件,唯一仍然有效的列是日期。我怎样才能提取它?
我使用的是 Windows 7 x64。
在这里,我只看到了st_atime、st_ctime、st_mtime: http://msdn.microsoft.com/en-us/library/14h5k7ff.aspx
最佳答案
Windows 为每个文件或文件夹存储三个时间戳:
- 创建时间(项目首次创建的时间/日期)
- 最后修改时间(文件最后写入的时间)
- Last access time(上次访问文件的时间)
有多种方法可以读取这些时间戳,但使用 native 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 中默认禁用。您可以使用注册表设置启用它。
关于c++ - 如何在 C++ 中为 Windows 7 x64 的特定文件提取 "Date column"值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18169654/