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);
}
我正在尝试从我的程序将扫描的文件名中获取DateTime
。 DateTime
的格式为dd / mm / yy。每次我到达这行代码:
Paycheck p = new Paycheck(DateTime.ParseExact(file.Substring(file.LastIndexOf("_" + 1), 6), "dd/mm/yy", null), file);
程序在没有做任何事情的情况下中断应用程序。它不会给我一个错误信息和任何有关正在发生的事情的信息。我确定我已经以某种令人困惑的方式写了这个,所以让我知道你需要澄清什么。
以下是其中一个帮助文件名的示例;
每周时间&费用表_AT_073111
答案 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//).