2017-05-17 180 views
0
var test = DateTime.ParseExact("Feb 4 2014 12:00AM", "MMM dd yyyy HH:mmtt", System.Globalization.CultureInfo.InvariantCulture).ToString("yyy-MM-dd"); 
System.Diagnostics.Debug.WriteLine(test); 

所以我得到了這段代碼。我正在嘗試將Feb 4 2014 12:00AM轉換爲2014-02-04日期時間更改格式錯誤

我得到的錯誤是這個:

型「System.FormatException」的異常出現在mscorlib.dll,但在用戶代碼中沒有處理

其他信息:字符串是未被識別爲有效的日期時間。

但我找不出什麼問題。任何想法 ?

回答

4

幾個問題與您的格式。它應該是:

"MMM d yyyy hh:mmtt" 

用途:

  • d日期部分,因爲它可以容納單,雙位數的日期,你目前的符dd所期望的個位數的日期部分開始與零象04。單個d可用於解析單/雙數字日期。
  • 使用hh而不是HH小時部分,因爲您的字符串中有AM,這意味着您的小時格式爲12小時,而不是24小時。

所以,你的代碼應該是:

var test = DateTime.ParseExact("Feb 4 2014 12:00AM", "MMM d yyyy hh:mmtt", System.Globalization.CultureInfo.InvariantCulture).ToString("yyy-MM-dd"); 
+1

非常感謝。我也嘗試過單個'd',但沒有想到問題來自'hh'。我在相反的地方讀了一遍,認爲這是'12小時'而不是'24'。 Thanx buddy :) – Darkpingouin

+0

當日期是這種格式時仍然會遇到異常情況:'Apr 17 2014 12:00 AM''d'只管理單個天數嗎? – Darkpingouin

+0

終於找到了問題。所以顯然,當你從一個SQL請求轉向字符串日期時。它執行以下操作: - 如果日數是「4」,它會給你「4」而不是「4」。 - 如果一天是「17」,它會給你正確的'17'。 我使用Replace函數來解決它。 – Darkpingouin