我使用以下代码将目录的修改时间写入标签
string selectedPath = comboBox1.SelectedItem.ToString();
DateTime lastdate = Directory.GetLastWriteTime(selectedPath);
datemodified.Text = lastdate.ToString();
它返回日期12/31/1600 7:00:00 PM,我不知道从哪里获取该日期。任何人都可以帮助我理解为什么它会返回该日期以及我如何解决它?我正在使用.NET 3.5
答案 0 :(得分:35)
如果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);