使用C# DateTime.TryParseExact解析无点日期失败问题排查
问题根源:日期格式符使用错误
你代码里的格式字符串"yyMMDD"用错了关键格式符——大写的DD代表「一年中的第几天」(取值范围1-366),而你要解析的是「月份中的第几天」,必须用小写的dd(两位数字表示的当月日期)。
举个具体的例子:
- 你测试的字符串
210201,如果用yyMMDD解析,程序会把01识别为「一年的第1天」,但前面的02是2月,一年第1天实际是1月1日,两者逻辑冲突,所以解析失败。 - 改成
yyMMdd后,210201会被正确解析为2021年2月1日。
修正后的代码:
DateTime.TryParseExact(value, "yyMMdd", CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out var date)
你测试的DateTime.ParseExact("201101","yyMMDD",...)也是同样的问题,把格式符改成yyMMdd后,就能正常解析为2020年11月1日,不会再抛出错误。
内容的提问来源于stack exchange,提问作者Teet Kalm
相关产品推荐
相关产品推荐

