2009-12-31 131 views
2

一直試圖解決這一個小時... ...日期時間解析困境在C#

string date = "2009-09-23T13:00:00" 

DateTime t = new DateTime(); 
t = DateTime.ParseExact(date, "HH:mm", null); 

結果此異常:

System.FormatException被未處理 消息=「字符串未被識別爲有效的DateTime「。

+0

但是,如果我想要一個只包含小時和分鐘的DateTime? – 2009-12-31 14:55:24

回答

15
t = DateTime.ParseExact(date, "yyyy-MM-ddTHH:mm:ss", null); 

隨着ParseExact,你想獲得一個字符串,並告訴解析器的字符串是什麼格式,上面的線將它轉換爲有效的DateTime。

如果您希望僅顯示小時和分鐘,那麼您需要添加如下內容:

string myString = t.ToString("HH:mm"); 
4

你必須指定從中解析整個字符串。

DateTime.ParseExact(date, "yyyy-MM-ddTHH:mm:ss", null); 
+0

ParseExact返回DateTime或引發異常(無布爾返回)。 TryParse方法返回布爾值。 – 2009-12-31 14:45:18

+0

ParseExact不會返回一個布爾值,它會返回一個DateTime ... – Webleeuw 2009-12-31 14:45:39

+0

@Sean,Webleeuw:噢,是的,對...把這兩個混在一起,對不起。 – Bobby 2009-12-31 14:48:33

1

ParseExact要求字符串與格式完全匹配。這一個沒有。你需要yyyy-MM-ddTHH:mm:ss作爲你的字符串。

2

文檔說明了一切:

字符串 表示的格式必須指定 格式完全匹配或異常是 拋出。

您的日期字符串與格式HH:mm不匹配。

順便說一句,你可以離開= new DateTime();一部分離開。

4

您試圖指定與輸入不匹配的格式。 ParseExact要求您指定輸入格式;你不能簡單地指定一個格式來指示你想要提取哪些組件。

這裏需要使用的格式是"yyyy-MM-ddTHH:mm:ss"

但是,如果這看起來像XML日期/時間格式,那麼使用XmlConvert.ToDateTime方法可能會更好,因爲它可以處理XML日期格式規範的微妙之處。

+0

XmlConvert是我正在尋找的答案(否則我會添加它;-p) – 2009-12-31 14:56:38