我正在使用 DirectoryInfo.CreationTime 来获取目录的创建日期
但是它返回奇怪的日期 {21/11/1617 0:00:00}
var directoryInfo = new DirectoryInfo("C:\\testFolder");
var lastWriteTime = directoryInfo.LastWriteTime; // correct value
var creationTime = directoryInfo.CreationTime; // Date = {21/11/1617 0:00:00}
var creationTimeUtc = directoryInfo.CreationTimeUtc; // Date = {21/11/1617 0:00:00}
有什么想法吗?
此外:
位于NAS共享的文件夹,有些文件夹返回正确的值有些不 我做了以下测试:
- 重启我的机器并检查数据和时间设置是否正确
- 从另一台机器运行应用程序
- 使用 .NET 4.0 VS2010 重新创建应用程序
- 从不同的操作系统 windows 7 运行应用程序
所有返回相同的值。但是,如果我选择文件夹属性,创建日期将设置为 2008 年。 这是一个错误吗?
最佳答案
我可以解释一下“奇怪的约会”。
Windows 文件时间基于 1/1/1601。
A file time is a 64-bit value that represents the number of 100-nanosecond intervals that have elapsed since 12:00 A.M. January 1, 1601 Coordinated Universal Time (UTC). The system records file times when applications create, access, and write to files.
http://msdn.microsoft.com/en-us/library/windows/desktop/ms724290(v=vs.85).aspx
您的文件系统似乎正在向 DirectoryInfo
(它继承自 FileSystemInfo
类,它正在调用 GetFileAttributesEx()
)报告 16 年的偏移量。
.Net 包装器
public DateTime CreationTimeUtc
{
get{
long fileTime = (long)((ulong)this._data.ftCreationTimeHigh << 32 | (ulong)this._data.ftCreationTimeLow);
return DateTime.FromFileTimeUtc(fileTime);
}
}
DateTime.FromFileTimeUtc
添加一个等于 1/1/1601 的值:
long ticks = fileTime + 504911232000000000L;
return new DateTime(ticks, DateTimeKind.Utc);
我找不到偏移量(16 年)的任何意义。它似乎太大了,不可能是 DST 错误或闰年,即使是累积了几个世纪。
我确实认为 CreationTime
和 CreationTimeUtc
返回完全相同的日期(除非您的本地时间与 UTC 相同)是很奇怪的。
关于c# - DirectoryInfo.CreationTime 返回奇怪的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15650218/