2013-12-17 160 views
0

我有一個值爲13/12/17,09:37:20 + 32的字符串我無法將其轉換爲日期時間格式。總是會出現錯誤,指出「字符串未被識別爲有效的日期時間」。這是我的代碼:字符串日期到日期時間格式

DateTime crtdDate = DateTime.ParseExact(l.CreateDate, "yy/MM/dd,hh:mm:ss tt", CultureInfo.InvariantCulture); 

請有人幫助我。謝謝!

+5

'+ 32'應該是什麼?這當然不是有效的時區偏移量。 –

+0

你的日期是無效格式嘗試使它像這樣2013/12/17,09:37:20 + 32而不是13/12/17,09:37:20 + 32因爲13被解釋爲13個月。代碼DateTime crtdDate = Convert.ToDateTime(d); – Jade

回答

1

tt表示任一ampm

32不會被TT進行解析。如果您試圖解析一秒鐘的洪流,請嘗試ff

var crtdDate = DateTime.ParseExact(l.CreateDate, "yy/MM/dd,hh:mm:ss+ff", CultureInfo.InvariantCulture); 
+0

+32是你的時間數值 – Jade

+0

從來沒有見過它,但我可以在格式spec中找到的最接近的東西是'zz',它指定**小時**與UTC的偏移量。爲什麼有人需要抵消超過12小時? http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx – sharoz

+0

我也是,但它會自動將日期減少到指定日期的前一天。 c#做了一些關於其他位(這只是我的猜測) – Jade

0

你的字符串必須完全匹配格式:

l.CreateDate = "06/15/2008"; 

[http://msdn.microsoft.com/en-us/library/az4se3k1(v=vs.110).aspx][1] 
"d" -> 6/15/2009 1:45:30 PM -> 6/15/2009 (en-US) 
     6/15/2009 1:45:30 PM -> 15/06/2009 (fr-FR) 
     6/15/2009 1:45:30 PM -> 2009/06/15 (ja-JP) 



DateTime.ParseExact(l.CreateDate, "d", CultureInfo.InvariantCulture); 

沒有+32,這將解析:

DateTime.ParseExact("13/12/17,09:37:20", "yy/MM/dd,hh:mm:ss", CultureInfo.InvariantCulture); 

使用一個有效的時區符,下面的工作:

DateTime crtdDate = DateTime.ParseExact("13/12/17,09:37:20+00:00", "yy/MM/dd,hh:mm:ssK", 
      CultureInfo.InvariantCulture);