当使用以下方法进行转换时,我阅读的大多数文件都得到了正确的时间:
// works great most of the time
private static DateTime convertToDateTime(System.Runtime.InteropServices.ComTypes.FILETIME time)
{
long highBits = time.dwHighDateTime;
highBits = highBits << 32;
return DateTime.FromFileTimeUtc(highBits + time.dwLowDateTime);
}
在这里,我在 Visual Studio 中有一个示例来说明此方法有时如何不起作用,例如,我将显示计算机中的实际文件和调试。所以恰好在我的调试中的文件是:
“A:\Users\Tono\Documents\Visual Studio 2010\Projects\WpfApplication4\WpfApplication4\obj\x86\Debug\App.g.cs”
这是我试图转换为 DateTime 的 FILETIME “顺便说一下,我需要 LastWriteTime”
在这里,您可以从该文件中看到 dwHighDateTime = 30136437 和 dwLowDateTime = -2138979250。
当我运行我的方法和其他技术时,我得到以下日期:
到目前为止,一切似乎都运行良好。但是为什么当我在 Windows 中浏览并查找该特定文件时我得到不同的日期!?这是我看到文件属性时得到的日期:
为什么日期不匹配?我究竟做错了什么?