2012-02-12 66 views
-1

我正在創建一個應用程序來解析C#中iTunes提供的xml,並且我在'Date Added'和'修改日期」,這有這樣的語法:如何將'2012-02-06T23:18:17Z'轉換爲DateTime

2012-02-06T23:18:17Z

我已經試過這樣:

DateModified = DateTime.ParseExact(s.Element("DateModified").ToString(), "yyyy-MM-ddTHH:mm:ssZ", System.Globalization.CultureInfo.InvariantCulture) 

但應用程序失敗並出現FormatException

{"String was not recognized as a valid DateTime."} 

回答

5

我相信s.Element("DateModified").ToString()不會輸出你認爲的東西。

這按預期工作:

var d = DateTime.ParseExact("2012-02-06T23:18:17Z", "yyyy-MM-ddTHH:mm:ssZ", System.Globalization.CultureInfo.InvariantCulture); 
Console.WriteLine(d.ToString()); 
+0

只是刪除了我的答案,因爲,即使你不需要使用'ParseExact '對於那個字符串,我沒有注意到輸入字符串* does *實際上是用該格式字符串解析的。發現得好! – 2012-02-12 23:21:58

+1

這工作完美...我沒有注意到s.Element(「DateModified」)。ToString()輸出: 2012-02-06T23:18:17Z lagranzotto 2012-02-12 23:41:14

0

沒什麼特別的:

var str = "2012-02-06T23:18:17Z"; 
DateTime t = DateTime.Parse(str, CultureInfo.InvariantCulture); 
t.ToUniversalTime(); 
1

假設這是LINQ到XML,你需要抓住元素的,所以做這個:

DateModified = DateTime.ParseExact(s.Element("DateModified").Value, "yyyy-MM-ddTHH:mm:ssZ", System.Globalization.CultureInfo.InvariantCulture); 
5

如果您使用的是LINQ to XML,那麼您可以只需將該元素投射到DateTime;這種自動解析的日期和時間以正確的格式字符串:

dateModified = (DateTime)s.Element("DateModified"); 

否則,您可以使用XmlConvert.ToDateTime

dateModified = XmlConvert.ToDateTime(s.Element("DateModified").Value, XmlDateTimeSerializationMode.Utc); 
+0

這也適用在XAttribute對象上。 – 2017-06-01 14:16:33