【发布时间】:2011-11-02 14:51:11
【问题描述】:
目前我正在检索文件名取决于文件的创建时间...
我想要的是,我想获取从 2011 年 2 月 10 日到 2011 年 2 月 11 日(今天)的所有文件。(30 天时差)
(即)我想从(today day - 30 days)获取文件名
我想从 (today day -90 days) 获取文件名
因为我已经这样做了......
private void filteringFiles()
{
string filenamepath = @"C:\defualt\Access\backupdb\";
List<String> listfiles = Directory.GetFiles(@"C:\defualt\Access\backupdb\", "backup-*.zip").ToList();
List<String> files = new List<String>();
List<String> getfiles = new List<String>();
foreach (var allfiles in listfiles)
{
files.Add(Path.GetFileName(allfiles));
//DateTime creationtime = File.GetCreationTime(files);
}
if (cbbackupforms.Text == "Month")
{
getfiles = (from string s in files where (DateTime.Now.Day - Convert.ToInt32(File.GetCreationTime(Path.Combine(filenamepath, s)).AddDays(-30)) < 1) && (DateTime.Now.Year - File.GetCreationTime(Path.Combine(filenamepath, s)).Year == 0) select s).ToList();
}
if (cbbackupforms.Text == "3 Months")
{
getfiles = (from string s in files where (DateTime.Now.Day - Convert.ToInt32(File.GetCreationTime(Path.Combine(filenamepath, s)).AddDays(-90)) < 3) && (DateTime.Now.Year - File.GetCreationTime(Path.Combine(filenamepath, s)).Year == 0) select s).ToList();
}
if (cbbackupforms.Text =="6 Months")
{
getfiles = (from string s in files where (DateTime.Now.Day - Convert.ToInt32(File.GetCreationTime(Path.Combine(filenamepath, s)).AddDays(-180)) < 6) && (DateTime.Now.Year - File.GetCreationTime(Path.Combine(filenamepath, s)).Year == 0) select s).ToList();
}
if (cbbackupforms.Text == "year")
{
getfiles = (from string s in files where ((DateTime.Now.Month - File.GetCreationTime(Path.Combine(filenamepath, s)).Month) < 12) select s).ToList();
}
listbackups.DataSource = getfiles;
}
但是我在这一行得到了错误
(DateTime.Now.Year - File.GetCreationTime(Path.Combine(filenamepath, s)).Year == 0) select s)
像这样……
ERROR:{"Invalid cast from 'DateTime' to 'Int32'."}
有人可以帮忙吗... 非常感谢提前...
更新:我仍然遇到同样的错误...
ERROR:{"Invalid cast from 'DateTime' to 'Int32'."}
在这一行
getfiles = (from string s in files where (DateTime.Now.Day - Convert.ToInt32(File.GetCreationTime(Path.Combine(filenamepath, s)).AddDays(-30))
【问题讨论】:
-
乍一看,一切看起来都还不错,但您是否有理由不使用 DateDiff,并可能将多个 List
简化为单个 List ?跨度> -
我不知道在这种情况下如何使用 datediff ......你能不能给这个例子提供任何 sn-p ......