web-dev-qa-db-ja.com

TimeSpanを特定のDateTimeに追加する

DateTimeに1日追加したいだけです。だから私は書いた:

 DateTime date = new DateTime(2010, 4, 29, 10, 25, 00);
 TimeSpan t = new TimeSpan(1, 0, 0, 0);

 date.Add(t);

 Console.WriteLine("A day after the day: " + date.ToString());

結果は次のようになると思いました:2010 04 30- 10:25:00しかし、まだ最初の日付を取得しています。

どうしましたか?

26

DateTime 値はimmutableです。 Add メソッドは、 TimeSpan が追加された新しい DateTime 値を返します。

これは機能します:

Console.WriteLine("A day after the day: " + date.Add(t).ToString());
60
dtb

行を変更する必要があります:

date = date.Add(t);
16
Paddy

dtbはDateTimeが不変であることについて正しいです。このように考えてください:DateTimeintまたはdoubleと同じカテゴリーに入れる値タイプです。これらの構造のインスタンスは変更できません。評価とコピーのみが可能です。

このコードを考えてみましょう:

_int i = 4;

i + 2;     // does not compile, but what if it did?
           // would i become 6? clearly not --
           // i + 2 expresses a NEW value, which can
           // be copied somewhere

i = i + 2; // there we go -- that's better
_

これは次のようなものです。

_DateTime d = DateTime.Now;
TimeSpan t = TimeSpan.FromDays(1.0);

d.Add(t);     // compiles (because AddDays is a function),
              // but is really the same as i + 2 above

d = d.Add(t); // that's better
_

ちなみに、これをより明確にするのに役立つかもしれないことの1つは、上記の行d = d.Add(t)が_d = d + t_と同じであることを認識することです。また、独自の行に_d + t_を記述しないのと同じように、独自の行に_i + 2_を記述しません。

11
Dan Tao

DateTimeは不変ですが、Add関数とSubtract関数は新しいDateTimeを返します。

DateTime tomorrow = DateTime.Now.AddDays(1);
7
Anthony Pegram

date = date.AddDays(1)を実行することの何が問題になっていますか?

Date.Add(t)の結果は次のとおりです。

 DateTime date = new DateTime(2010, 4, 29, 10, 25, 00);
 TimeSpan t = new TimeSpan(1, 0, 0, 0);

 // The change is here, setting date to be the *new* date produced by calling Add
 date = date.Add(t);

 Console.WriteLine("A day after the day: " + date.ToString());
5
Rob
date.Add(t);

変更されたDateTimeを返し、Addメソッドを呼び出した元のインスタンスは変更しません。

2
Bala R

DateTime objデータ型が「DateTime?」の場合、DateTimeは機能しません。 null値を受け入れます。この場合、DateTime? dt = DateTime.Now;

        DateTime dateObj = new DateTime();

        dateObj = Convert.ToDateTime(dt.ToString());

        var Month3 = dateObj.AddMonths(3);`
1
Dpk-Kumar