嘗試將像這樣的字符串Dec 1, 2016 1:48 PM CST
轉換爲DateTime對象。有沒有辦法將這種字符串轉換爲日期?
Convert.ToDateTime(story.AddedDateString);
沒有工作,我也沒有真正期待它。
System.FormatException:該字符串未被識別爲有效的 DateTime。有一個未知單詞從索引21開始。
是我得到的錯誤消息。想知道在嘗試轉換之前是否可以告訴它格式?
嘗試將像這樣的字符串Dec 1, 2016 1:48 PM CST
轉換爲DateTime對象。有沒有辦法將這種字符串轉換爲日期?
Convert.ToDateTime(story.AddedDateString);
沒有工作,我也沒有真正期待它。
System.FormatException:該字符串未被識別爲有效的 DateTime。有一個未知單詞從索引21開始。
是我得到的錯誤消息。想知道在嘗試轉換之前是否可以告訴它格式?
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);
您可以使用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
這是一條評論,而不是答案 – mybirthname
如果你顯示它的工作原理,這將是一個答案。 –
考慮像**解析搜索關鍵字**。因爲這聽起來像你想要做的。將字符串解析爲DateTime對象,並提供自定義格式。 –