2011-02-16 81 views
2

我在c#下面的代碼,在那裏我將我的字符串類型格式日期轉換爲datetime,但給出錯誤。給System.FormatException:String未被識別爲有效的DateTime。在C#中使用datetime.ParseExact在#

if (!string.IsNullOrEmpty(SessionDictionary.GetValue("UserDetails", "ExpiryDate"))) 
{ 
    DateTime ExpiryDate = DateTime.ParseExact(SessionDictionary.GetValue("UserDetails", "ExpiryDate"), "dd mmm yy", null);      
    strDate = sitedata.FormatDate(ExpiryDate, TridionDateFormat.ShortDate); 
} 
else 
{ 
    strDate = "-"; 
} 

SessionDictionary.GetValue("UserDetails", "ExpiryDate")就是我使用DateTime.ParseExact它給我System.FormatException: String was not recognized as a valid DateTime.錯誤,返回「31/01/2011 00:00:00」格式的日期,在上面的代碼字符串類型的數據。

請提出什麼是錯的。

謝謝。

回答

5

您描述的樣本日期(31/01/2011 00:00:00)看起來像格式dd/MM/YYYY HH:mm:ss,那麼爲什麼要使用dd mmm yyyy?

嘗試

DateTime.ParseExact(..., "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture); 

注意使用HH(24小時制),而不是HH(12小時制),並使用InvariantCulture的,因爲有些文化比使用其他斜槓分隔。

例如,如果文化是de-DE,則格式「dd/MM/yyyy」將預期時間段作爲分隔符(31.01.2011)。

1

可能因爲MMM(沒有這樣的月份格式),嘗試MMM來代替。(貌似月/月/等)

+0

沒有那不能發出,因爲如果我只是使用「d」在那也給錯誤,請建議! – 2011-02-16 06:53:44

1

您使用了錯誤的格式來解析日期。正確的是:

DateTime ExpiryDate = DateTime.ParseExact(SessionDictionary.GetValue("UserDetails", "ExpiryDate"), "dd/MM/yyyy hh:mm:ss", null) 

另外,如果您的系統日期格式設置爲dd/MM/yyyy,你可以簡單地使用:

DateTime ExpiryDate = DateTime.ParseExact(SessionDictionary.GetValue("UserDetails", "ExpiryDate"), "G", null) 
+0

我已經試過這個,但仍然給我同樣的錯誤,請建議! – 2011-02-16 06:59:03

相關問題