我想搜索目录并查找过去x天的文件,目前我的函数一直返回同一个文件(2天前创建的人),即使我搜索的时间超过2天。
decimal days = nudDays.Value;
//read the number from NumericUpDown comtrol
private void setDays()
//each change in NumericUpDown comtrol will change days variable
{
if (nudDays.Value != 0)
{
days = nudDays.Value;
}
else
{
days = decimal.MaxValue;
}
}
检查我的文件是否在过去x天(天变量)中创建:
public bool checkFileCreationDate(FileInfo fileInfo)
{
double num = (double)nudDays.Value * -1;
if (fileInfo.CreationTime > DateTime.Now.AddDays(num))
{
return true;
}
return false;
}
答案 0 :(得分:2)
这可以使用您要查找的Date值中的linq pass来完成
Date somedate;
var filterFiles = from file in directoryInfo.GetFiles()
where file.CreationTime > somedate
select file;
答案 1 :(得分:1)
基于此声明:
目前我的函数一直返回同一个文件(2天前创建的人),即使我搜索的时间超过2天。
我相信你想要做的就是改变这一行:
if (fileInfo.CreationTime > DateTime.Now.AddDays(num))
对此:
if (fileInfo.CreationTime == DateTime.Now.AddDays(num))
但是,我不得不承认,完全并不是那么清楚,所以我希望我能正确理解它。
如果您想要在过去n
天内创建的所有文件(即如果n
为6,那么它将返回1-6天之前的任何文件),然后使用:< / p>
public bool checkFileCreationDate(FileInfo fileInfo)
{
double num = (double)nudDays.Value;
if (DateTime.Now.Subtract(fileInfo.CreationTime).TotalDays <= num)
{
return true;
}
return false;
}
如果您想要n
天以前的所有文件(例如,如果n
为6,那么它将返回6天前的任何文件),然后使用:
public bool checkFileCreationDate(FileInfo fileInfo)
{
double num = (double)nudDays.Value;
if (DateTime.Now.Subtract(fileInfo.CreationTime).TotalDays == num)
{
return true;
}
return false;
}
答案 2 :(得分:0)
如果您的时间跨度超过两天,则会包含两天前创建的文件。没关系,因为“四天”实际上转换为[now-4d .. now]
的区间要排除测试文件,您必须将日期数减少为一个。
请注意,在许多情况下,fileInfo.CreationTime和fileInfo.LastWriteTime是不同的。 您可能希望过滤LastWriteTime。