2013-01-23 63 views
0

可能重複:
DateTime.ParseExact string format exception字符串轉換爲DateTime導致錯誤

FormatException被發現!

我試圖將字符串轉換爲DateTime

string dateString1 = "5/22/1985 12:00:00 AM"; 

DateTime myDate = 
    DateTime.ParseExact(dateString1, 
         "mm-dd-yyyy", 
         System.Globalization.CultureInfo.InvariantCulture); 

它給了我一個錯誤,但是當我嘗試將字符串轉換這種格式

string dateString2 = "10-10-2000"; 

這第二個字符串工作得很好,但dateString1不行!

+1

我編輯了自己的冠軍。請參見「[應的問題包括‘標籤’,在他們的頭銜?(http://meta.stackexchange.com/questions/19190/)」,這裏的共識是「不,他們不應該」。 –

+2

http://stackoverflow.com/questions/2000580/datetime-parseexact-string-format-exception – MUG4N

+2

「DateTime」格式字符串中的「mm」表示**分鐘**,而不是數月。 –

回答

6

您的代碼回答你的問題。您使用ParseExact,這是因爲不會接受你的第一個字符串的格式。

從MSDN(http://msdn.microsoft.com/en-us/library/w2sa9yss.aspx):

使用日期和時間的日期時間其等效的指定字符串表示形式轉換指定的格式和文化特定的格式信息。字符串表示的格式必須完全匹配指定的格式。

0

你特別讓你的代碼解析正是根據其格式爲「MM-DD-YYYY」的日期,所以,當然也只有與格式的日期將工作。如果你使用DateTime.Parse來代替,那麼這兩個例子都可以工作。

+0

謝謝!我現在意識到,謝謝你的提示。這是我第一次使用日期時間,我還是老樣子學習:) –

1

試試這個:

DateTime myDate = DateTime.ParseExact(dateString1, "M/d/yyyy h:m:s tt", System.Globalization.CultureInfo.InvariantCulture); 
+0

由於它的工作! :) –

0

你可以使用解析,而不是ParseExact:

DateTime myDate = DateTime.Parse(dateString1); 

這應該正確地解析要麼你的兩個例子。 http://msdn.microsoft.com/en-us/library/1k1skd40.aspx

+0

它不工作DateTime myDate = DateTime.Parse(「5/22/1985 12:00:00 AM」) –