爲什麼會這樣運行下去,並且不添加天無限循環中而
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