gpt4 book ai didi

c# - DirectoryInfo.CreationTime 返回奇怪的日期

转载 作者:行者123 更新时间:2023-11-30 12:11:23 25 4
gpt4 key购买 nike

我正在使用 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共享的文件夹,有些文件夹返回正确的值有些不我做了以下测试:

  1. 重启我的机器并检查数据和时间设置是否正确
  2. 从另一台机器运行应用程序
  3. 使用 .NET 4.0 VS2010 重新创建应用程序
  4. 从不同的操作系统 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 错误或闰年,即使是累积了几个世纪。

我确实认为 CreationTimeCreationTimeUtc 返回完全相同的日期(除非您的本地时间与 UTC 相同)是很奇怪的。

关于c# - DirectoryInfo.CreationTime 返回奇怪的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15650218/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com