字符串转DateTime失败求助:部分日期解析报错原因不明
日期字符串转DateTime失败的原因及解决方法
问题原因
你用的格式字符串"M/dd/yyyy h:mm:ss tt"里,dd是两位数日期的强制占位符,要求日期部分必须是两位数字(比如08)。第一个示例中的日期是8(一位数),不符合dd的格式规则,所以转换报错;而第二个示例的日期是10(两位数),完全匹配dd的要求,因此转换成功。
解决方案
- 调整格式字符串适配单/双位数日期:把
dd改成d,d可以兼容一位或两位数的日期,修改后的代码如下:
DateTime.ParseExact("7/8/2020 3:15:07 PM", "M/d/yyyy h:mm:ss tt", System.Globalization.CultureInfo.InvariantCulture)
- 兼容多种混合格式:如果数据库里的日期同时存在单/双位数的月、日,可以提供多个格式字符串,用
DateTime.TryParseExact来覆盖所有可能的格式,示例代码:
string[] dateFormats = { "M/d/yyyy h:mm:ss tt", "M/dd/yyyy h:mm:ss tt", "MM/d/yyyy h:mm:ss tt", "MM/dd/yyyy h:mm:ss tt" }; DateTime parsedDate; if (DateTime.TryParseExact("7/8/2020 3:15:07 PM", dateFormats, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out parsedDate)) { // 转换成功,使用parsedDate } else { // 处理转换失败的逻辑 }
内容的提问来源于stack exchange,提问作者dadou
相关产品推荐
相关产品推荐

