2011-08-25 47 views
2

所以我想弄清楚我在做什麼這個邏輯錯了。這看起來很直接,我的斷言表明,'if'陳述中的假設解決爲真,但sum.ppStart等人沒有14天添加到他們。C#日期時間評估問題

這可能是簡單的,但任何幫助,將不勝感激。

//Determine the start/end days of each week of the pay period and retrieve a list of those entries 

DateTime[] weeks = timeTools.calcPP(0); 
DateTime today = DateTime.Now.Date; 

if (today > weeks[3]) 
{ 
    weeks[0].AddDays(14); 
    weeks[3].AddDays(14); 
    weeks[4].AddDays(14); 
} 

sum.ppStart = weeks[0]; 
sum.ppEnd = weeks[3]; 
sum.payDate = weeks[4]; 

回答

8

AddDays返回DateTime一個實例,現有的值不會改變,這是一個不可變的結構。當使用該功能時,捕獲結果

DateTime myDate = ... 
myDate = myDate.AddDays(14); 
+1

噢,我覺得自己像個白癡。這不像我以前從未這樣做過,哈哈。感謝大家的幫助! – BobZavala

+0

@Bob,它發生了。 –

+1

只需添加到此 - 「DateTime」是不可變的,就像'String'一樣。原來的問題是這兩個問題所犯的常見錯誤。 –

2

這是因爲您沒有使用AddDays方法的結果。簽名是

public DateTime AddDays(double days) 

左右(見link)。你需要這樣做:

weeks[0] = weeks[0].AddDays(14); 
2

您需要分配值:

if (today > weeks[3]) 
{ 
    weeks[0] = weeks[0].AddDays(14); 
    weeks[3] = weeks[3].AddDays(14); 
    weeks[4] = weeks[4].AddDays(14); 
}