web-dev-qa-db-ja.com

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();

しかし、このコードは機能せず、日数は追加されません!私がやっている愚かな間違いは何ですか?

56
Nomi Ali

DateTimeは不変です。つまり、状態を変更できず、操作の結果を変数に割り当てる必要があります。

endDate = endDate.AddDays(addedDays);
99
Darren Young

戻り値をキャッチする必要があります。

DateTime.AddDays メソッドは、値がインスタンスの日時と追加された値の合計であるオブジェクトを返します。

endDate = endDate.AddDays(addedDays);
16
Jensen

その理由は、AddDays()メソッドが新しいDateTimeを返すためです。これは、どこにも割り当ても使用もしていません。

使用例:

DateTime newDate = endDate.AddDays(2);
9
Freeman

AddDaysメソッドは結果として新しいDatetimeを返すため、何らかの日付変数に終了日を割り当てます。

Datetime somedate=endDate.AddDays(2);
6
coder

これを使って:

DateTime dateTime =  DateTime.Now;
DateTime? newDateTime = null;
TimeSpan numberOfDays = new TimeSpan(2, 0, 0, 0, 0);
newDateTime = dateTime.Add(numberOfDays);
4
Saurabh Mishra

なぜInt64を使用するのですか? AddDaysは、double- valueの追加を要求します。次に、AddDays.の戻り値を使用する必要があります。 here を参照してください。

3
bash.d

次のように日付に日付を追加できます。

// 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);
2