【问题标题】:Using DateTime in a For loop, incrementing date Isn't working在 For 循环中使用 DateTime,增加日期不起作用
【发布时间】:2011-03-28 12:50:30
【问题描述】:
我有这个循环,它的目的是循环一系列日期并执行一些逻辑来自动将条目添加到数据库中。问题是递增部分 date.AddDays(1.0) 不起作用,并且始终是相同的结果,从而导致无限循环。有什么见解吗?
for (DateTime date = DateTime.Now; futureDate.CompareTo(date) > 0; date.AddDays(1.0))
{
// logic here
}
【问题讨论】:
标签:
c#
asp.net
datetime
for-loop
【解决方案1】:
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
}
【解决方案2】:
日期时间是不可变的。改为:date = date.AddDays(1.0)