我在想这是个大问题......
我有这样的路径......“C:\ restore \ restoredb \”
在那条路上我有这样的文件..
restore-2011-10-12T17-16-51.zip
restore-2011-10-11T13-24-45.zip
restore-2011-05-11T09-45-56.zip
restore-2011-08-11T09-08-07.zip
restore-2010-09-11T09-45-12.zip
我有一个表单,在那种形式我有一个列表框和组合框(cbrestore) 我有这样的组合框项目......月,3个月,6个月,一年......
我想要的是,如果我选择combobox item(month)
我想显示这些日期之间存储在该文件夹中的文件名(12-10-2011 to 12-09-2011)..
如果我选择combobox item(3 months)
我想在列表框中显示这些日期(12-10-2011 to 12-07-2011)..
之间存储在该文件夹中的文件名
为此,我试过了......
private void cbrestore_SelectedIndexChanged(object sender, EventArgs e)
{
string fullpathforfiles = @"C:\restore\restoredb\";
string[] allfiles = Directory.GetFiles(fullpathforfiles);
foreach (string single in allfiles)
{
string filenameonly = Path.GetFileName(single);
}
if (cbrestore.SelectedValue == Daterange.type1)
{
}
}
struct Daterange
{
public const string type1 = "Month";
public const string type2 = "3 Months";
public const string type3 = "6 Months";
public const string type4 = "Year";
}
我不知道如何提取该文件名中的确切部分并添加... 我怎么能这样做..请... ..
任何建议和任何代码示例代码段对我来说都非常棒......
非常感谢.....
答案 0 :(得分:3)
我会这样做:
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
List<String> t = Directory.GetFiles(@"C:\Users\justin\Desktop\New folder (2)").ToList();
List<String> y = new List<string>();
List<String> u = new List<string>();
foreach (var zzz in t)
{
y.Add(Path.GetFileName(zzz));
}
if (comboBox1.Text == "Month")
{
u =
(from String s in y where ((DateTime.Now.Month - DateTime.Parse(s.Substring(8, 10)).Month) < 1) && (DateTime.Now.Year - DateTime.Parse(s.Substring(8, 10)).Year == 0) select s).
ToList();
}
else if (comboBox1.Text == "3 Month")
{
u =
(from String s in y where ((DateTime.Now.Month - DateTime.Parse(s.Substring(8, 10)).Month) < 3) && (DateTime.Now.Year - DateTime.Parse(s.Substring(8, 10)).Year == 0) select s).
ToList();
}
else if(comboBox1.Text == "1 Year")
{
u =
(from String s in y where ((DateTime.Now.Month - DateTime.Parse(s.Substring(8, 10)).Month) < 12) select s).
ToList();
}
listBox1.DataSource = u;
}
结果如下:
编辑:修正了您在SS中看到的月份问题,并添加了年份选择。
答案 1 :(得分:1)
我猜您可以使用类似下面的内容从字符串中提取日期。
filenameonly = filenameonly.Substring(filenameonly.IndexOf("-") + 1, filenameonly.IndexOf("T") - filenameonly.IndexOf("-") - 1)
希望这会有所帮助!!
答案 2 :(得分:1)
使用Praveen的代码,
filenameonly = filenameonly.Substring(filenameonly.IndexOf("-") + 1, filenameonly.IndexOf("T") - filenameonly.IndexOf("-") - 1)
然后将其拆分为数组filenameonly.split("-")
重新排列它们,以便您可以转换为日期并检查它是否在3个月内
DateTime filetime = New DateTime(); filetime.parse(filenameonlyarray[2] + "/" + filenameonlyarray[1] + "/" + filenameonlyarray[0]); if (filetime.compareto(DateTime.Now.AddMonths(-3) > 0) { //within 3 months }
使用此日期对象,您现在可以使用它来检查它是否在''
的3个月内