C# 如何根据创建日期时间获取列表框中的文件

C# 如何根据创建日期时间获取列表框中的文件,c#,C#,我创建了一个网站,帮助用户根据创建日期从方向D驱动器检索文件,并在列表框中查看文件,如果用户在文本框中输入日期,列表将只显示与用户输入日期相同的文件。我没有收到任何错误,但当我写入If(TextBox1.text.Equals(dt.ToString(“dd/MM/yyyy”))时此代码行列表框中不显示文件,但我希望根据用户输入日期和获取创建文件日期之间的比较来获取文件 protected void Button1_Click(object sender, EventArgs e) {

我创建了一个网站,帮助用户根据创建日期从方向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);
    }
}

输入日期的更好方法是使用
DateTimePicker
用户控件(例如web)。不要使用自定义格式来比较
DateTime
对象。在本例中,您需要将输入的字符串解析为DateTime对象,然后进行比较。您可以使用以下命令执行此操作:

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

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

看看这一点,可以找到另一种比较/使用DateTime对象的方法。

试试看,别忘了验证输入,我还建议您使用DateTime选择器而不是文本框

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));
    }
}

您看到的错误或程序行为是。。。。。?如果你回应,请不要说“它不起作用”。要么描述一下你的行为,要么告诉我们你看到了什么错误。欢迎这么说。不清楚你在问什么。你描述了你的函数应该做什么,但没有说它实际上做了什么,缺少了什么。你面临的问题是什么?这一行返回的是什么值file.ToString()我编辑了这个问题,请重读它,这是行不通的,除非他精确到毫秒。还有太多的处理器开销,为什么要枚举两次序列?
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));
    }
}