【问题标题】:String was not recognized as a valid DateTime: Format exception字符串未被识别为有效的日期时间:格式异常
【发布时间】:2011-12-06 19:23:03
【问题描述】:

我有这样的路径..."C:\restore\restoredb\"

在那个路径中我有这样的文件..

 backup-2011-10-12T17-16-51.zip
 backup-2011-10-11T13-24-45.zip

我有一个表格,在那个表格中我有一个列表框和组合框(cbrestore)我有这样的组合框项目......月,3个月,6个月,年......

我想要的是,如果我选择组合框项目(月份),我想显示在这些日期(2011 年 12 月 10 日至 2011 年 12 月 9 日)之间存储在该文件夹中的文件名..

如果我选择组合框项目(3 个月),我想在这些日期(2011 年 12 月 10 日至 2011 年 12 月 7 日)之间显示存储在该文件夹中的文件名..在列表框中

为此,我已经尝试过这个....但是,如果我选择组合框项目月份,那么我会收到下面提到的错误

 List<String> t = Directory.GetFiles(@"C:\restore\restoredb\").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();
    }

错误: 未处理格式异常,字符串未被识别为有效的日期时间。

在这一行

(DateTime.Now.Month - (DateTime.Parse(s.Substring(8, 10)).Month) < 1) && (DateTime.Now.Year - DateTime.Parse(s.Substring(8, 10)).Year == 0)

有没有什么可以帮忙的......

非常感谢.....

【问题讨论】:

    标签: c# .net winforms string datetime


    【解决方案1】:

    我认为你在索引中犯了一个错误。

    改用 s.Substring(7, 10)。

    【讨论】:

      【解决方案2】:

      在我看来,您的索引不正确。你正在服用011-10-12T

      s.Substring(7, 10)

      【讨论】:

        【解决方案3】:

        s.Substring(8, 10) 是基于您输入的字符串“011-10-12T”,不会被解析为日期或日期的一部分。

        尝试从输入字符串构造一个日期时间,例如:

         string input = "backup-2011-10-12T17-16-51.zip";
        
                    string[] splitInputs = input.Split('-');
        
                    DateTime inputDate = new DateTime(
                        int.Parse(splitInputs[1]), //Year
                        int.Parse(splitInputs[2]), //Month
                        int.Parse(splitInputs[3].Split('T')[0]), //Day left of the T 
                        int.Parse(splitInputs[3].Split('T')[1]), //Hour, right of the T
                        int.Parse(splitInputs[4]), //Minutes
                        int.Parse(splitInputs[5].Split('.')[0])); //Seconds, left of the .zip
        

        并使用构造的 DateTime 进行比较。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-07-22
          • 1970-01-01
          相关资源
          最近更新 更多