2015-07-10 80 views
1

我解析從銀行存款報告的日期,格式是這樣的:條件DateTime.ParseExact格式

Jul 9 2015 
Jun 20 2015 

基本上只是個位數一天不包含前導零MMM dd yyyyDateTime.ParseExact()中有條件格式化的簡單方法嗎?或者我將不得不預先處理日期字符串,並添加前導零或刪除額外的空間?下面是一位數日的日期是什麼在起作用:

Dim dtDepositDate As DateTime 
dtDepositDate = DateTime.ParseExact(strDate, "MMM d yyyy", CultureInfo.InvariantCulture) 

,顯然,MMM dd yyyy爲兩位數的日期會工作,但不會爲在兩者之間具有額外空間的個位數的日期工作。

回答

2

對於單/雙位數的日部分

使用單一d這是很好的單,雙位數的日期值。

如果DateTime轉換爲string,那麼具有單個d會影響值。至於解析而言,它會爲單,雙位數日期值工作,像0111120等,同樣適用於MHm,說明符MonthHourMinutes

對於多個空格

對於多個空格解析使用DateTimeStyles.AllowWhiteSpaces

DateTime dt = DateTime.ParseExact("Jul 9 2015", "MMM d yyyy", 
           CultureInfo.InvariantCulture, 
           DateTimeStyles.AllowWhiteSpaces); 

或兩位數日部分:

DateTime dt = DateTime.ParseExact("Jun 20 2015", "MMM d yyyy", 
           CultureInfo.InvariantCulture, 
           DateTimeStyles.AllowWhiteSpaces); 
+0

注意兩個數字的日期沒有多餘的空間,在一個月名之間。這就是困境......「MMM dd yyyy」適用於一種情況,「MMM d yyyy」適用於其他情況,但兩種都不適用。 –

+0

我想我可能只是做一個'strDate.Replace(「」,「」))來刪除前導空格(如果適用)。這應該解決我的問題,我只是想知道是否有某種方式來處理這與字符串格式本身。 –

+0

@dubstylee,不只是修改我的答案。 – Habib