2010-08-11 138 views
18

我有這個循環,其目的是遍歷一系列日期並執行一些邏輯來自動將條目添加到數據庫中。問題是遞增部分date.AddDays(1.0)不起作用,並且總是相同的結果,導致無限循環。任何見解?在For循環中使用DateTime,增加日期不起作用

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

回答

55

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 
} 
7

日期時間是不變的。更改爲:date = date.AddDays(1.0)