2012-02-12 67 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