2013-03-12 69 views
32

我想在某個日期添加日期。我有這樣的代碼:C#中的日期時間添加日期

DateTime endDate = Convert.ToDateTime(this.txtStartDate.Text); 
Int64 addedDays = Convert.ToInt64(txtDaysSupp.Text); 
endDate.AddDays(addedDays); 
DateTime end = endDate; 
this.txtEndDate.Text = end.ToShortDateString(); 

但是這段代碼不工作,天沒有添加!我在做什麼愚蠢的錯誤?

+0

什麼是不工作? – 2013-03-12 11:28:49

+1

我看到四個完全相同的答案。爲什麼... – 2016-12-10 05:07:41

回答

63

DateTime是不可變的。這意味着你不能改變它的狀態並且必須把操作的結果分配給一個變量。

endDate = endDate.AddDays(addedDays); 
+0

任何值類型都是不可變的,僅此而已。 – Freeman 2013-03-12 11:32:59

+0

@Freeman,是它的一個值類型,它是不變的 – Habib 2013-03-12 11:33:02

+0

@Freeman,你是對的,看到這個討論以及http://stackoverflow.com/questions/868411/are-value-types-immutable-by-definition – Habib 2013-03-12 11:33:38

11

您需要知道返回值。

DateTime.AddDays方法返回一個對象,它的值是實例的日期和時間與所添加的值的總和。

endDate = endDate.AddDays(addedDays); 
8

它,因爲AddDays()方法返回一個新DateTime,你不分配或使用在任何地方。使用

例子:

DateTime newDate = endDate.AddDays(2); 
2

爲何使用Int64AddDays要求添加一個值double。然後,您需要使用返回值AddDays.請參閱here

+0

這種方法需要長型變量! – 2013-03-12 11:38:57

+0

@NomiAli不,它不!看看我提供的鏈接...... – 2013-03-12 11:39:50

5

的結束日期分配給某個日期的變量,因爲AddDays方法返回新的datetime作爲結果..

Datetime somedate=endDate.AddDays(2); 
0

使用:

 DateTime dateTime = new DateTime(); 
    dateTime = DateTime.Now; 
    DateTime newDateTime = new DateTime(); 
    TimeSpan NumberOfDays = new TimeSpan(2, 0, 0, 0, 0); 
    newDateTime = dateTime.Add(NumberOfDays);