2009-12-31 99 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