2013-03-12 71 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);