2009-10-02 7 views
2

Controller:Pourquoi AddMonths() ne fonctionne pas sur mon DateTime? (Voir code)

 DateTime startDate = DateTime.Now; 

     ViewData["now"] = startDate.ToString(); 
     ViewData["interval"] = interval.ToString(); 

     startDate.AddMonths(interval); 

     ViewData["later"] = startDate.ToString(); 

Vue:

Now: <%=ViewData["now"] %><br /> 

Later: <%=ViewData["later"] %><br /> 

Interval: <%=ViewData["interval"] %> 

Cela donne:

Now: 10/2/2009 12:17:14 PM 
Later: 10/2/2009 12:17:14 PM 
Interval: 6 

Répondre

16
startDate = startDate.AddMonths(interval); 
+0

Ceci est correct. Les opérations sur DateTimes sont non destructives. –

3

AddMonths retourne une nouvelle DateTime avec la valeur.

startDate = startDate.AddMonths(interval) 
5

De la documentation:

Cette méthode ne change pas la valeur de cet objet DateTime. Au lieu de cela, un nouvel objet DateTime est renvoyé dont la valeur est le résultat de cette opération.

Vous voulez vraiment:

ViewData [ "plus tard"] = startDate.AddMonths (intervalle) .ToString();

ou quelque chose comme ça.

3

Vous devez affecter le résultat du AddMonths à une variable. AddMonths ne modifie pas la valeur de l'objet sur lequel il a été appelé, mais renvoie plutôt un nouveau DateTime avec la valeur qui résulte de l'opération en laissant la valeur DateTime d'origine inchangée.

Questions connexes