System.ArgumentOutOfRangeException异常咨询:DateTime参数无效报错原因排查
问题原因分析
这种情况大概率是第一行代码修改了创建DateTime时用到的参数值,导致第二行传入的年、月、日组合不符合日期的合法范围,最终触发了参数越界异常。
举个最典型的例子,假设你的代码是类似这样的:
month = 13; // 第一行代码,把月份改成了超出范围的13 var date = new DateTime(year, month, day); // 第二行,自然会抛出参数异常
当你注释掉第一行时,month保持了合法的取值(1-12),所以DateTime构造函数能正常创建实例。
还有一种常见场景:第一行代码在计算日期参数时出了问题,比如:
day = DateTime.DaysInMonth(year, month) + 1; // 第一行,把日期设成了当月最大天数+1 var date = new DateTime(year, month, day); // 第二行,超出当月天数范围,触发异常
总结一下核心原因:
- 第一行代码直接或间接修改了
year/month/day中的一个或多个变量,使其值超出了DateTime允许的合法范围:- 年份需在1-9999之间
- 月份需在1-12之间
- 日期需对应月份的有效天数(比如2月最多28或29天,4月最多30天等)
- 注释第一行后,这些参数回到了合法取值区间,所以
DateTime构造函数能正常执行。
如果能贴出具体代码片段,还能更精准定位问题,但从当前现象来看,基本就是参数被第一行代码修改成非法值导致的异常。
内容的提问来源于stack exchange,提问作者w0051977
相关产品推荐
相关产品推荐

