web-dev-qa-db-ja.com

日付オブジェクトから月を引く方法は?

VB.NETで日付オブジェクトから1か月を減算するにはどうすればよいですか?

私が試してみました:

Today.AddMonths(-1)

ただし、今日が2010年1月1日であることを考えると、結果は2010年12月1日になります。 2009年12月1日です。

.NETフレームワーク内でこれを行う便利な方法はありますか?

24
Andrew

実際には、Todayを変数に転送して、その割り当てをそこで機能させる必要があります。次のコードは期待どおりの結果を生成します(投稿を2回考えさせたため、検証しました)。

Dim dt As DateTime = Date.Today
dt = dt.AddMonths(-2)

Dim x As String = dt.ToString()
43
Joel Etherton

これは正常に機能します。DateTimeは変更できないことを覚えておく必要があります。

Dim d As DateTime
d = New DateTime(2010, 1, 1)
d = d.AddMonths(-1)

DateTime Structure をご覧ください

AddまたはSubtractなどのDateTimeのインスタンスの計算は、インスタンスの値を変更しません。代わりに、計算は、値が計算の結果であるDateTimeの新しいインスタンスを返します。

8
Adriaan Stander
Dim d As DateTime = #1/1/2010#
d = d.AddMonths(-1)
1
dbasnett

私は以下を使用しましたが、うまくいきます。

Dim dtToday As DateTime = Date.Today
dtToday = dtToday.AddMonths(-2)
0
ksk