C#中的DateTime解析困境

时间:2009-12-31 14:40:06

标签: c# datetime

试图解决这个问题几个小时......

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

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

此例外的结果:

System.FormatException未处理 Message =“字符串未被识别为有效的DateTime。”

5 个答案:

答案 0 :(得分:15)

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

使用ParseExact,您尝试获取一个字符串并告诉解析器确切的字符串是什么格式。上面的行将把它转换为有效的DateTime。

如果您只想显示小时和分钟,则会添加以下内容:

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

答案 1 :(得分:4)

您必须指定解析它的整个字符串。

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

答案 2 :(得分:4)

您正在尝试指定与输入不匹配的格式。 ParseExact要求您指定输入格式;您不能简单地指定一个格式,指明您要提取哪些组件。

您需要在此处使用的格式为"yyyy-MM-ddTHH:mm:ss"

但是,鉴于这看起来像XML日期/时间格式,如果是,那么您可能最好使用XmlConvert.ToDateTime方法,因为它可以处理XML日期格式规范的细微之处。

答案 3 :(得分:2)

文档说明了一切:

  

字符串的格式   表示必须与指定的匹配   格式完全或异常   抛出。

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

顺便说一下,你可以保留= new DateTime();离开。

答案 4 :(得分:1)

ParseExact要求字符串与格式完全匹配。这个没有。你需要yyyy-MM-ddTHH:mm:ss作为你的字符串。