字符串到DateTime dd / mm / yy错误

时间:2014-05-13 03:30:15

标签: c# datetime

foreach (var file in Directory.GetFiles(@"C:\Users\Andrew\Desktop\Timesheets\2011", "*.xlsx", SearchOption.AllDirectories)){             
  Paycheck p = new Paycheck(DateTime.ParseExact(file.Substring(file.LastIndexOf("_" + 1), 6), "dd/mm/yy", null), file);
  _Paychecks.Add(p);
}

我正在尝试从我的程序将扫描的文件名中获取DateTimeDateTime的格式为dd / mm / yy。每次我到达这行代码:

Paycheck p = new Paycheck(DateTime.ParseExact(file.Substring(file.LastIndexOf("_" + 1), 6), "dd/mm/yy", null), file);

程序在没有做任何事情的情况下中断应用程序。它不会给我一个错误信息和任何有关正在发生的事情的信息。我确定我已经以某种令人困惑的方式写了这个,所以让我知道你需要澄清什么。

以下是其中一个帮助文件名的示例;

每周时间&费用表_AT_073111

2 个答案:

答案 0 :(得分:4)

您需要使用大写MM代表Month而不是小mm

从您的示例日期字符串07312011看起来像

前两位数字 - 07 => Month
接下来的两位数 - 31 => Date
接下来的四位数 - 2011 => Year

因此您的格式应为MMddyyyy

编辑:关闭LastIndexOf()功能后需要添加1

试试这个:

Paycheck p = new Paycheck(DateTime.ParseExact(file.Substring(
                   file.LastIndexOf("_") + 1, 6), "MMddyyyy", null), file);

答案 1 :(得分:0)

试试这个。

将字符串转换为DateTime时,          使用

 Convert.ToDateTime(//your string which is converted to DateTime//).