DateTime.ParseExact格式异常求助:无法识别指定DateTime字符串
问题
System.FormatException: 字符串'2021-03-13 11:22:54.3100000'未被识别为有效的DateTime。
抛出错误的代码:
DateTime.ParseExact( x.FirstOrDefault(y => y.dte == "Date")?.Value, "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture)
请问这段代码哪里有问题?
解答
核心问题是格式字符串与目标字符串不匹配:你定义的解析格式是
"yyyy-MM-dd HH:mm:ss",只覆盖到秒级,但待解析的字符串包含7位毫秒后缀.3100000,格式规则不匹配导致解析失败。两种解决思路:
- 修正格式字符串,包含毫秒部分:
因为你的毫秒是7位,对应格式占位符fffffff,修改后的代码如下:DateTime.ParseExact( x.FirstOrDefault(y => y.dte == "Date")?.Value, "yyyy-MM-dd HH:mm:ss.fffffff", CultureInfo.InvariantCulture) - 若不需要毫秒信息,可先截断字符串再解析:
var dateValue = x.FirstOrDefault(y => y.dte == "Date")?.Value; if (!string.IsNullOrEmpty(dateValue) && dateValue.Contains(".")) { dateValue = dateValue.Substring(0, dateValue.IndexOf(".")); } DateTime result = DateTime.ParseExact(dateValue, "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture);
- 修正格式字符串,包含毫秒部分:
内容的提问来源于stack exchange,提问作者st27
相关产品推荐
相关产品推荐

