GetLastWriteTime返回12/31/1600 7:00:00 PM

时间:2012-05-14 13:06:12

标签: c# directory .net-3.5 label

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

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

它返回日期12/31/1600 7:00:00 PM,我不知道从哪里获取该日期。任何人都可以帮助我理解为什么它会返回该日期以及我如何解决它?我正在使用.NET 3.5

6 个答案:

答案 0 :(得分:35)

来自the documentation

  

如果path参数中描述的目录不存在,则此方法返回美国俄勒冈州公元1601年1月1日午夜12点,协调世界时(UTC),调整为当地时间。

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

答案 1 :(得分:0)

首先想到的是你的时间设置正确。第二个想法是右键单击该文件夹,看看它在属性中的含义。最后,我创建了新的测试文件夹并对其运行了一些GetLastWriteTime测试,以便您知道自己要回来的内容。

答案 2 :(得分: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();

答案 3 :(得分:0)

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

答案 4 :(得分: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);

答案 5 :(得分:0)

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

获取服务器路径

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

这将是您的实际路径

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

var CreationDate = File.GetLastWriteTime(Path);