ある日付に日を追加したい。私はこのようなコードを持っています:
DateTime endDate = Convert.ToDateTime(this.txtStartDate.Text);
Int64 addedDays = Convert.ToInt64(txtDaysSupp.Text);
endDate.AddDays(addedDays);
DateTime end = endDate;
this.txtEndDate.Text = end.ToShortDateString();
しかし、このコードは機能せず、日数は追加されません!私がやっている愚かな間違いは何ですか?
DateTimeは不変です。つまり、状態を変更できず、操作の結果を変数に割り当てる必要があります。
endDate = endDate.AddDays(addedDays);
戻り値をキャッチする必要があります。
DateTime.AddDays メソッドは、値がインスタンスの日時と追加された値の合計であるオブジェクトを返します。
endDate = endDate.AddDays(addedDays);
その理由は、AddDays()
メソッドが新しいDateTime
を返すためです。これは、どこにも割り当ても使用もしていません。
使用例:
DateTime newDate = endDate.AddDays(2);
AddDays
メソッドは結果として新しいDatetimeを返すため、何らかの日付変数に終了日を割り当てます。
Datetime somedate=endDate.AddDays(2);
これを使って:
DateTime dateTime = DateTime.Now;
DateTime? newDateTime = null;
TimeSpan numberOfDays = new TimeSpan(2, 0, 0, 0, 0);
newDateTime = dateTime.Add(numberOfDays);
なぜInt64
を使用するのですか? AddDays
は、double
- valueの追加を要求します。次に、AddDays.
の戻り値を使用する必要があります。 here を参照してください。
次のように日付に日付を追加できます。
// 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);