2012-07-20 109 views
11

我有這個簡單的程序:DateTime.AddDays()無法正常運行

 DateTime aux = new DateTime(2012, 6, 12, 12, 24, 0); 
     DateTime aux2 = new DateTime(2012, 6, 12, 13, 24, 0); 
     aux2.AddDays(1); 

     Console.WriteLine((aux2 - aux).TotalHours.ToString()); 

     Console.ReadLine(); 

我調試,發現這個aux2.AddDays(1);似乎不工作,我缺少什麼嗎? 它應該返回25,但答案是一。

問題是什麼?

AddHours不起作用,我猜其他人不工作太。

+6

'DateTime'實例是不可變的。您必須將'.AddDays'的結果分配給另一個實例(或自己)。 – mellamokb 2012-07-20 16:43:47

+1

+1 Downvoters - 爲什麼?這看起來像一個完全合法的問題。 – JDB 2012-07-20 20:00:29

回答

43

它的工作,但你不這樣做有返回值,試着把

aux2 = aux2.AddDays(1); 

DateTime份額不變性這一方面與String秒。


編輯

有關於它的一個小段落上MSDN

此方法不會改變這個日期時間的價值。相反,它 返回一個新的DateTime,其值是此操作的結果。

+0

認真:| ,我沒有語言,我認爲aux2會自動改變,這是一個錯誤。 – 2012-07-20 16:46:55

+0

是的,「返回一個新的DateTime字符串...」「,在鼠標上的工具提示 – 2012-07-20 16:48:51

+2

@ user1103707 - 我已經在.NET中編程了12年,每隔一段時間我都會被絆倒。並不總是直觀的。 – JDB 2012-07-20 20:03:20

4

DateTime.AddDays返回新的DateTime,添加指定的天數。您需要將其分配給您的變量:

aux2 = aux2.AddDays(1); 
+0

我認爲你的意思是'aux2 = aux2.AddDays(1);' – JDB 2012-07-20 20:02:13

+0

是的,這是一個錯字。 – Zbigniew 2012-07-21 08:35:57