为什么File.GetLastWriteTimeUtc和FileInfo.LastWriteTime为GMT返回不同的值?

时间:2015-03-09 17:25:57

标签: c# file datetime fileinfo

所以我有一个文件..

var myFile = C:\docs\MyFile.pptx

当我注意到

FileInfo fi = new FileInfo(myfile);
var lastModified = fi.LastWriteTime;

var lastModified = File.GetLastWriteTimeUtc(myFile);

返回不同的值。为什么是这样? FileInfo值对应于Windows资源管理器“修改日期”列中显示的值。他们为什么不同?我希望他们能够返回完全相同的值。

1 个答案:

答案 0 :(得分:1)

我实际上检查了Reflector中的代码,它们都做了完全相同的事情,即:

return DateTime.FromFileTimeUtc((long) data.ftLastWriteTimeHigh << 32 | (long) data.ftLastWriteTimeLow);

VS

return DateTime.FromFileTimeUtc((long) this._data.ftLastWriteTimeHigh << 32 | (long) this._data.ftLastWriteTimeLow);

我也测试了它,日期是一样的。您必须意外地将Utc与非Utc函数进行比较。