在For循环中使用DateTime,递增日期不起作用

时间:2010-08-11 17:40:25

标签: c# asp.net datetime for-loop

我有这个循环,它的目的是遍历一系列日期并执行一些逻辑来自动将条目添加到数据库中。问题是递增部分date.AddDays(1.0)不起作用,并且始终是相同的结果,导致无限循环。任何见解?

for (DateTime date = DateTime.Now; futureDate.CompareTo(date) > 0; date.AddDays(1.0))
{
    // logic here
}

2 个答案:

答案 0 :(得分:61)

DateTime.AddDays返回新实例而不修改date。目前你正在丢弃这个新实例。相反,你需要这样做:

for (DateTime date = DateTime.Now; futureDate.CompareTo(date) > 0; date = date.AddDays(1.0))
{
    // logic here
}

此外,我不确定您何时可以使用CompareTo运算符来调用<。我不知道CompareTo(date) > 0是否正确而不考虑它,而<运算符的意图是显而易见的:

for (DateTime date = DateTime.Now; date < futureDate; date = date.AddDays(1.0))
{
    // logic here
}

答案 1 :(得分:8)

DateTime是不可变的。更改为:date = date.AddDays(1.0)