82 votes

Datetime en C# ajouter des jours

Je veux ajouter des jours à une date donnée. J'ai un code comme celui-ci :

DateTime endDate = Convert.ToDateTime(this.txtStartDate.Text); 
Int64 addedDays = Convert.ToInt64(txtDaysSupp.Text); 
endDate.AddDays(addedDays); 
DateTime end = endDate; 
this.txtEndDate.Text = end.ToShortDateString();

Mais ce code ne fonctionne pas, les jours ne sont pas ajoutés ! Quelle est l'erreur stupide que je commets ?

137voto

Darren Young Points 1781

DateTime est immuable. Cela signifie que vous ne pouvez pas modifier son état et que vous devez assigner le résultat d'une opération à une variable.

endDate = endDate.AddDays(addedDays);

20voto

Jensen Somers Points 1708

Vous devez récupérer la valeur de retour.

Les DateTime.AddDays renvoie un objet dont la valeur est la somme de la date et de l'heure de l'instance et de la valeur ajoutée.

endDate = endDate.AddDays(addedDays);

12voto

Freeman Points 2852

C'est parce que le AddDays() renvoie un nouveau DateTime que vous n'attribuez ni n'utilisez nulle part.

Exemple d'utilisation :

DateTime newDate = endDate.AddDays(2);

9voto

Nayas Subramanian Points 988

Vous pouvez ajouter des jours à une date comme suit :

// add days to current **DateTime**
var addedDateTime = DateTime.Now.AddDays(10);

// add days to current **Date**
var addedDate = DateTime.Now.Date.AddDays(10);

// add days to any DateTime variable
var addedDateTime = anyDate.AddDay(10);

7voto

coder Points 1940

Affecter la date de fin à une variable de date parce que AddDays renvoie un nouveau Datetime comme résultat .

Datetime somedate=endDate.AddDays(2);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X