WHILE或FOR循环中的日期不递增

时间:2016-04-21 18:12:02

标签: c# datetime for-loop while-loop

以下代码有什么问题?日期不会在我的FOR循环中递增,因此它会进入无限循环,因为从不满足条件。我也用WHILE循环尝试了它并得到了相同的结果。

var startDate = DateTime.Today;
var endDate = new DateTime(2016, 12, 31);
for (var date = startDate; date <= endDate; date.AddDays(1))
{
   // Some logic here
}

2 个答案:

答案 0 :(得分:3)

AddDays没有修改date的值,它只返回DateTime的新实例,并且您不会返回递增值。

应该是

for (var date = startDate; date <= endDate; date = date.AddDays(1))

答案 1 :(得分:2)

来自documentation

  

返回一个新的DateTime,它将指定的天数添加到   这个实例的价值。

因此,date.AddDays(1)不会更改date的值;它返回表示已更改值的 new DateTime。如果您想更改date,请执行以下操作:

date = date.AddDays(1);