2014-05-13 93 views
1
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。每次我到這行代碼:String to DateTime dd/mm/y error

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

程序中斷到應用程序而不做任何事情。它不會給我一個錯誤消息和任何有關正在發生的事情的信息。我確信我以某種令人困惑的方式寫了這篇文章,所以讓我知道你需要澄清什麼。

這裏是一個文件名incase的例子有助於;

週刊時間&費用Sheet_AT_073111

+0

突破這條線分開爲兩個 - 第一line..and看看它與調試器 – BrokenGlass

+0

所以這樣創建'DateTime'實例? DateTime test = DateTime.ParseExact(file.Substring(file.LastIndexOf(「_」+ 1),8),「dd/MM/yy」,null); Paycheck p = new Paycheck(test,file);' – teepee

+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); 
+0

仍然只是不執行代碼 – teepee

+0

@teepee:檢查我編輯的答案,你的格式應該是'MMddyyyy' –

+0

好吧我剛剛意識到一些文件是MMddyy和其他文件是ddMMyy,我手動更改了一個我粘貼到這篇文章以0731「20」11作爲測試,試圖解決我的問題,並在我發佈之前意外忘記修復它。然而,程序試圖掃描的第一個文件被格式化爲MMddyy,並且它仍然沒有任何錯誤地打破 – teepee

0

試試這個。

,同時將字符串轉換爲DateTime, 使用

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