17

我正在使用以下代码将目录的日期修改时间写入标签

string selectedPath = comboBox1.SelectedItem.ToString();
DateTime lastdate = Directory.GetLastWriteTime(selectedPath);
datemodified.Text = lastdate.ToString();

它返回日期 12/31/1600 7:00:00 PM,我不知道它是从哪里获得该日期的。谁能帮我理解为什么它会返回那个日期以及我该如何解决它?我正在使用 .NET 3.5

4

6 回答 6

42

文档中

如果 path 参数中描述的目录不存在,则此方法返回 1601 年 1 月 1 日午夜 12:00,协调世界时 (UTC),调整为本地时间。

所以大概你的时区是UTC-5(一月),并且目录不存在......

于 2012-05-14T13:08:45.877 回答
0

首先想到的是你的时间设置是否正确。第二个想法是右键单击该文件夹并查看它在属性中的内容。最后,我会创建新的测试文件夹并在其上运行一些 GetLastWriteTime 测试,这样你就知道你得到了什么。

于 2012-05-14T13:10:31.113 回答
0

GetLastWriteTime并不总是返回可靠的日期时间,使用这个

string selectedPath = comboBox1.SelectedItem.ToString();
DateTime now = DateTime.Now;
TimeSpan localOffset = now - now.ToUniversalTime();
DateTime lastdate = File.GetLastWriteTimeUtc(selectedPath) + localOffset;
datemodified.Text = lastdate.ToString();
于 2016-05-05T17:30:31.503 回答
0

老问题,但今天我遇到了这个问题。当您的路径无效或文件不存在时,也会返回该特定日期,因为在任何这些情况下都没有内置异常。

于 2016-07-27T13:06:30.620 回答
0

GetLastWriteTime()使用/结果测试未找到文件的简单方法GetLastWriteTimeUtc()如下:

// ##### Local file time version #####
DateTime fileTimeEpochLocal=DateTime.FromFileTime(0);
// Use File.GetLastWriteTime(pathname) for files
// and Directory.GetLastWriteTime(pathname) for directories
DateTime lastWriteTime=Directory.GetLastWriteTime(selectedPath); 

// Check for a valid last write time
if (lastWriteTime!=fileTimeEpochLocal) // File found
    DoSomethingWith(selectedPath,lastWriteTime);
else // File not found
    HandleFileNotFound(selectedPath);

// ##### UTC file time version #####
DateTime fileTimeEpochUtc=DateTime.FromFileTimeUtc(0);
// Use File.GetLastWriteTimeUtc(pathname) for files
// and Directory.GetLastWriteTimeUtc(pathname) for directories
DateTime lastWriteTimeUtc=Directory.GetLastWriteTimeUtc(selectedPath);

// Check for a valid last write time
if (lastWriteTimeUtc!=fileTimeEpochUtc) // File found
    DoSomethingWith(selectedPath,lastWriteTimeUtc);
else // File not found
    HandleFileNotFound(selectedPath);
于 2019-01-14T19:20:51.820 回答
0

在 .net core 中,您需要获取文件的绝对路径。添加对的引用Microsoft.Extensions.Hosting并将其注入到您的构造函数中。该ContentRootPath属性将是您的网络根目录。

获取您的服务器路径

var Files = FIO.Directory.GetFiles("Unzipped");

这将是您的实际路径

var Path = string.Format(@"{0}\{1}",WebRootPath, Files[0]);

var CreationDate = File.GetLastWriteTime(Path);
于 2020-12-01T17:42:25.670 回答