日期字符串转DateTime对象报错:String was not recognized as a valid datetime
解决DateTime.ParseExact解析失败的问题
嘿,我一眼就揪出问题所在啦!你碰到的String was not recognized as a valid datetime错误,核心是格式字符串和输入的日期时间不匹配,还有小时制的误用,具体来说有两个关键问题:
- 小时制不匹配:你输入的时间是
15:30(24小时制),但格式字符串里用的是hh——这是12小时制的小时格式(范围01-12),15显然不在这个范围内,得换成HH(24小时制,范围00-23)。 - 格式字符串多余部分:你的输入只有日期和时分,没有秒数,但格式字符串里写了
:ss,解析器找不到对应的秒数部分,自然就报错了。
另外,为了避免系统区域设置影响解析(比如有些区域的日期分隔符不是/),最好指定CultureInfo.InvariantCulture作为解析的文化信息,这样代码的兼容性会更好。
修正后的代码如下:
using System.Globalization; // 记得引用这个命名空间 DateTime drawDatetime = DateTime.ParseExact("19/01/2018 15:30", "dd/MM/yyyy HH:mm", CultureInfo.InvariantCulture);
如果之后你的输入可能包含秒数,只需要把格式字符串改成dd/MM/yyyy HH:mm:ss,同时确保输入字符串也有对应的秒数部分就可以正常解析啦!
内容的提问来源于stack exchange,提问作者Sridhar Paiya
相关产品推荐
相关产品推荐

