试图解决这个问题几个小时......
string date = "2009-09-23T13:00:00"
DateTime t = new DateTime();
t = DateTime.ParseExact(date, "HH:mm", null);
此例外的结果:
System.FormatException未处理 Message =“字符串未被识别为有效的DateTime。”
答案 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作为你的字符串。