none
(急ぎの質問)DateTime.AddDaysメソッドが正常に処理されない RRS feed

  • 質問

  • 緊急に御回答をお願い致します。

    日付を1日加算するコードを書いているのですが、結果として加算されていません。

    DateTime.AddDays()の使い方は、色々なWEBサイトの解説をコピペして書いたものです。

    動作環境 Windows7 32bits  SP1 , VS2010

           Dim _Day = DateTime.Today '今日の日付(2017/5/18)が入る
            Debug.Print(_Day.Day)
            _Day.AddDays(1)
            Debug.Print(_Day.Day)

    結果
    18
    18

    なぜ加算されないのか、教えて下さい。

    2017年5月18日 0:24

回答

  • 下記の、DateTime.AddDays メソッドの解説を見ますと

    https://msdn.microsoft.com/ja-jp/library/system.datetime.adddays%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396

    「このインスタンスの値に、指定された日数を加算した新しい DateTime を返します。」

    とありました。下記のようにしてはどうでしょうか?

    Dim _Day = DateTime.Today '今日の日付(2017/5/18)が入る
    Debug.Print(_Day.Day)
    Dim _newDay = _Day.AddDays(1)
    Debug.Print(_newDay.Day)
    

    • 回答としてマーク huahi11112 2017年5月18日 0:45
    2017年5月18日 0:36

すべての返信

  • こんにちは。

    Dim _DayAfter = _Day.AddDays(1)

    としてみてください。

    ---

    使い方は、以下に記載があります。

    https://msdn.microsoft.com/ja-jp/library/system.datetime.adddays%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396

    >This method does not change the value of this DateTime. Instead, it returns a new DateTime whose value is the result of this operation.

    2017年5月18日 0:34
    モデレータ
  • 下記の、DateTime.AddDays メソッドの解説を見ますと

    https://msdn.microsoft.com/ja-jp/library/system.datetime.adddays%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396

    「このインスタンスの値に、指定された日数を加算した新しい DateTime を返します。」

    とありました。下記のようにしてはどうでしょうか?

    Dim _Day = DateTime.Today '今日の日付(2017/5/18)が入る
    Debug.Print(_Day.Day)
    Dim _newDay = _Day.AddDays(1)
    Debug.Print(_newDay.Day)
    

    • 回答としてマーク huahi11112 2017年5月18日 0:45
    2017年5月18日 0:36
  • なるほど!!新しいインスタンスを作って結果を代入すれば良いのですね。

    これで動きました。お手数をお掛けしました。

    御回答誠にありがとうございました。
    2017年5月18日 0:46
  • 新しいインスタンスを作って結果を代入すれば良いのですね。

    何か他のクラスのメソッドの使い方と混同していたのだと思います。

    お忙しい中、御回答誠にありがとうございました。

    2017年5月18日 0:49
  • VS2010のポップアップでは、「このインスタンスの値に、指定した日数を加算します。」とありますね。私も同じような勘違いをしました。
    2019年3月3日 16:30