Как вычесть месяц из объекта Date? - PullRequest
24 голосов
/ 03 февраля 2010

Как вычесть месяц из объекта даты в VB.NET?

Я пробовал:

Today.AddMonths(-1)

Тем не менее, учитывая, что сегодня 01 января 2010 года, я получу 01 декабря 2010 года. Я хочу ответить 01 декабря 2009 года.

Есть ли удобный способ сделать это в .NET Framework?

Ответы [ 4 ]

43 голосов
/ 03 февраля 2010

Вы на самом деле должны перенести Today в переменную и позволить этому назначению работать там.Следующий код даст ожидаемый вами результат (я только что подтвердил, потому что ваш пост заставил меня подумать дважды).

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

Dim x As String = dt.ToString()
8 голосов
/ 03 февраля 2010

Это отлично работает, вы должны помнить, что DateTime является неизменным.

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

Взгляните на DateTime Structure

Расчет по экземпляру DateTime, например, Добавить или Вычесть, не изменяет значение пример. Вместо этого расчет возвращает новый экземпляр DateTime чье значение является результатом расчет.

1 голос
/ 03 февраля 2010
Dim d As DateTime = #1/1/2010#
d = d.AddMonths(-1)
0 голосов
/ 03 февраля 2010

Я использовал следующее, и это работает.

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