如何在列表框中获取文件取决于创建日期时间

本文关键字:文件 取决于 创建日期 时间 获取 列表 | 更新日期: 2023-09-27 18:02:48

我创建了一个网站,帮助用户根据创建日期从方向D驱动器检索文件,并在列表框中查看文件,如果用户在文本框中输入日期,列表将只显示与用户输入日期相同的文件。我没有得到任何错误,但当我写if (TextBox1.Text.Equals(dt.ToString("dd/MM/yyyy"))))这个代码行没有文件显示在列表框上,但是我想根据用户输入日期和获取创建文件日期之间的比较来获取文件。

protected void Button1_Click(object sender, EventArgs e)
{
    DirectoryInfo dinfo = new DirectoryInfo(@"D:'Local_temp");
    FileInfo[] files = dinfo.GetFiles("*.MSG");
    DateTime dt;
    foreach (FileInfo file in files)
    {
        dt = File.GetCreationTime(file.ToString());
        if (TextBox1.Text.Equals(dt.ToString("dd/MM/yyyy")))
            // DateTime dt = file.CreationTime;
            ListBox1.Items.Add(file.Name);
    }
}

如何在列表框中获取文件取决于创建日期时间

试试这个,也不要忘记验证您的输入,我还建议您使用日期时间选择器而不是文本框

protected void Button1_Click(object sender, EventArgs e)
{
    DirectoryInfo dinfo = new DirectoryInfo(@"D:'Local_temp");
    FileInfo[] files = dinfo.GetFiles("*.msg");
    DateTime dt;
    if (DateTime.TryParse(this.TextBox1.Text, out dt))
    {
        files.Where(x => File.GetCreationTime(x.FullName).Date == dt.Date).ToList().ForEach(x => this.ListBox1.Items.Add(x.Name));
    }
}

输入日期的更好方法是使用DateTimePicker用户控件(对于web,例如jQueryUI)。不要使用自定义格式来比较DateTime对象。在您的示例中,需要将输入的String解析为DateTime对象,然后进行比较。您可以通过使用DateTime来做到这一点。TryParse方法:

// user entered 01.May
String date = "2014-05-01 12:01:01"; // TextBox1.Text
DateTime timestamp = DateTime.Now;
// parse the entered string
if (!DateTime.TryParse(date, out timestamp))
{
    throw new FormatException("Entered Date/Time has an invalid format");
}
// take some files for the example
var files = new DirectoryInfo("d:''temp''xml''").GetFiles().ToList();
// show all files
files.ForEach(file => Console.WriteLine("{0} - {1}", file.CreationTime, file.Name));
Console.WriteLine("Filtered");
// filter files from May
foreach (var file in files)
{
    if (file.CreationTime >= timestamp)
    {
        Console.WriteLine("{0} - {1}", file.CreationTime, file.Name);
    }
}

在你的情况下,它应该工作,如果你使用FileInfo。与所需的时间戳进行比较,创建为DateTime对象。例如,我有3个文件,其中一个是在2014年5月创建的,我想只显示01之后创建的文件。可能(01.05.2014)。输出为:

29.01.2014 19:24:51 - 1.xml
29.01.2014 19:25:20 - 2.xml
03.05.2014 19:32:04 - xml.xml
Filtered
03.05.2014 19:32:04 - xml.xml

看一下这个SO答案-如何比较DateTime的另一种可能性来比较/使用DateTime对象