如何從VB.NET中的日期對象中減去一個月?如何從Date對象中減去一個月份?
我曾嘗試:
Today.AddMonths(-1)
不過,由於今天是01-JAN-2010,結果我得到的是01日 - 12月2010。我想要的答案是2009年12月1日。
有沒有一種方便的方法,在.NET框架內做到這一點?
如何從VB.NET中的日期對象中減去一個月?如何從Date對象中減去一個月份?
我曾嘗試:
Today.AddMonths(-1)
不過,由於今天是01-JAN-2010,結果我得到的是01日 - 12月2010。我想要的答案是2009年12月1日。
有沒有一種方便的方法,在.NET框架內做到這一點?
您實際上必須將Today傳輸到一個變量中,並讓該作業在那裏工作。下面的代碼會產生你期望的結果(我剛剛對它進行了驗證,因爲你的帖子讓我思考了兩次)。
Dim dt As DateTime = Date.Today
dt = dt.AddMonths(-2)
Dim x As String = dt.ToString()
*嘆了口氣*不敢相信我再次跌倒那個... – Andrew 2010-02-03 04:43:23
這很好,你需要記住DateTime是不可變的。
Dim d As DateTime
d = New DateTime(2010, 1, 1)
d = d.AddMonths(-1)
的計算上 的DateTime的實例,如加或減, 不修改 實例的值。相反,計算 會返回一個新的DateTime的實例 ,它的值是 計算的結果。
謝謝。所有這些-2業務都令人困惑。 – dbasnett 2010-02-03 14:42:43
我已經使用了以下,它的工作原理。
Dim dtToday As DateTime = Date.Today
dtToday = dtToday.AddMonths(-2)
Dim d As DateTime = #1/1/2010#
d = d.AddMonths(-1)
好的。這個問題(和答案)真的讓我很困惑。您使用的確切代碼是什麼,表現出上述問題?我在調試器中輸入了Today.AddMonths(-1),它正常工作,如果你是在一月份,則從一年中減去一個。 – 2010-02-03 19:34:48
嗨,Jason。問題實際上並不是.AddMonths()不起作用。問題是Date對象是不可變的。我沒有將.AddMonths()的返回值賦給一個變量。例如,我在做someDate.AddMonths(-1),當它應該是someDate = someDate.AddMonths(-1)。 – Andrew 2010-02-03 21:53:08
在這種情況下,someDate不會改變。即在您的示例中,它仍將設置爲2010年1月1日,而不是2010年12月1日。因此,我的困惑。 – 2010-02-04 00:12:47