web-dev-qa-db-fra.com

Comment soustraire un mois de l'objet Date?

Comment soustraire un mois d'un objet date dans VB.NET?

J'ai essayé:

Today.AddMonths(-1)

Cependant, étant donné qu'aujourd'hui est le 1er janvier 2010, le résultat que j'obtiens est le 1er décembre 2010. La réponse que je veux est le 1er décembre 2009.

Existe-t-il un moyen pratique de le faire dans le cadre .NET?

24
Andrew

Vous devez en fait transporter Today dans une variable et laisser cette affectation y fonctionner. Le code suivant produira le résultat que vous attendez (je viens de le vérifier parce que votre message m'a fait réfléchir à deux fois).

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

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

Cela fonctionne très bien, vous devez vous rappeler que le DateTime est imuable.

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

Jetez un oeil à DateTime Structure

Un calcul sur une instance de DateTime, telle que Ajouter ou Soustraire, ne modifie pas la valeur de l'instance. Au lieu de cela, le calcul renvoie une nouvelle instance de DateTime dont la valeur est le résultat du calcul.

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

J'ai utilisé ce qui suit et cela fonctionne.

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