为什么会这样运行下去,并且不添加天无限循环中而
var startDate = new DateTime(year, 1, 1);
var endDate = startDate.AddYears(1);
while (startDate < endDate)
{
startDate.AddDays(1);
}
的目标是通过循环在一年内所有的日子。
谢谢!
为什么会这样运行下去,并且不添加天无限循环中而
var startDate = new DateTime(year, 1, 1);
var endDate = startDate.AddYears(1);
while (startDate < endDate)
{
startDate.AddDays(1);
}
的目标是通过循环在一年内所有的日子。
谢谢!
在.NET DateTime
是不可变的,所以AddDays
方法只是返回新的日期,而不是改变startDate
本身。
您应该指定这个新值回startDate
:
startDate = startDate.AddDays(1);
有点话题。但是'.AddDays(1)'方法覆盖了闰年? – user1027620
它确实如此。你可以很容易地检查它:'var date1 = new DateTime(2016,2,28).AddDays(1); var date2 = new DateTime(2015,2,28).AddDays(1);' –
startDate.AddDays(1);
不改变startDate
,所以startDate < endDate
始终是真实的。
为了避免这种讨厌的错误(未分配回AddDays(1)
结果)我建议实施for
循环,而不是while
:
for (var date = new DateTime(year, 1, 1);
date < new DateTime(year + 1, 1, 1);
date = date.AddDays(1)) {
...
}
我最终这样做了。 +1 – user1027620
旁注:'for'循环,而不是'while'长相,恕我直言,更自然:'for(var date = new DateTime(year,1,1); date