2016-12-01 151 views
1

嘗試將像這樣的字符串Dec 1, 2016 1:48 PM CST轉換爲DateTime對象。有沒有辦法將這種字符串轉換爲日期?

Convert.ToDateTime(story.AddedDateString);沒有工作,我也沒有真正期待它。

System.FormatException:該字符串未被識別爲有效的 DateTime。有一個未知單詞從索引21開始。

是我得到的錯誤消息。想知道在嘗試轉換之前是否可以告訴它格式?

+4

考慮像**解析搜索關鍵字**。因爲這聽起來像你想要做的。將字符串解析爲DateTime對象,並提供自定義格式。 –

回答

9

DateTime.ParseExact會得到你最的方式存在。例如:

string input = "Dec 1, 2016 1:48 PM"; 
DateTime date = DateTime.ParseExact(input, "MMM d, yyyy h:mm tt", CultureInfo.InvariantCulture); 

但是,它不通過的縮寫處理的時間段,因爲有multiple time zones with CST爲縮寫。框架內不直接支持將「CST」轉換爲偏移量。

如果您轉換爲一種格式,其中包括偏移量,你可以把它轉換:

string input = "Dec 1, 2016 1:48 PM -06:00"; 
DateTime date = DateTime.ParseExact(input, "MMM d, yyyy h:mm tt K", CultureInfo.InvariantCulture); 
2

您可以使用DateTime.ParseExact()並使用可用的DateTime格式化程序指定格式字符串。

舉個例子:

string date = "Dec 1, 2016 1:48 PM CST"; 
DateTime parsedDate = DateTime.ParseExact(myDate, "MMM d, yyyy h:mm tt", CultureInfo.InvariantCulture); 

與此唯一的問題是,它不會處理您的時區。您需要處理時區,方法是用UTC偏移量替換該字符串部分(如果使用-06:00的格式zzz,則DateTime.ParseExact()將處理該字符串),或者刪除該字符串的一部分並計算您的時區有一個實際的日期對象。

你可以閱讀更多的https://msdn.microsoft.com/en-us/library/w2sa9yss(v=vs.110).aspx

+2

這是一條評論,而不是答案 – mybirthname

+3

如果你顯示它的工作原理,這將是一個答案。 –