79

我想在某个日期添加天数。我有这样的代码:

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

但是这段代码不起作用,天数不加!我在做什么愚蠢的错误?

4

7 回答 7

128

日期时间是不可变的。这意味着您不能更改它的状态,并且必须将操作的结果分配给变量。

endDate = endDate.AddDays(addedDays);
于 2013-03-12T11:30:34.333 回答
20

您需要捕获返回值。

DateTime.AddDays方法返回一个对象,该对象的值是实例的日期和时间与相加值的总和。

endDate = endDate.AddDays(addedDays);
于 2013-03-12T11:28:35.967 回答
12

这是因为该AddDays()方法返回一个新DateTime的,您没有在任何地方分配或使用它。

使用示例:

DateTime newDate = endDate.AddDays(2);
于 2013-03-12T11:28:46.020 回答
8

您可以将日期添加到这样的日期:

// add days to current **DateTime**
var addedDateTime = DateTime.Now.AddDays(10);

// add days to current **Date**
var addedDate = DateTime.Now.Date.AddDays(10);

// add days to any DateTime variable
var addedDateTime = anyDate.AddDay(10);
于 2018-12-19T10:25:31.060 回答
7

将 enddate 分配给某个日期变量,因为AddDays方法返回新的 Datetime 作为结果。

Datetime somedate=endDate.AddDays(2);
于 2013-03-12T11:33:55.587 回答
4

用这个:

DateTime dateTime =  DateTime.Now;
DateTime? newDateTime = null;
TimeSpan numberOfDays = new TimeSpan(2, 0, 0, 0, 0);
newDateTime = dateTime.Add(numberOfDays);
于 2017-10-05T16:00:27.417 回答
3

你为什么用Int64AddDays要求double添加一个 - 值。然后你需要使用AddDays.See here的返回值。

于 2013-03-12T11:30:15.450 回答