web-dev-qa-db-fra.com

Date et heure dans les jours d'ajout C #

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 erreur stupide je fais?

56
Nomi Ali

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

endDate = endDate.AddDays(addedDays);
99
Darren Young

Vous devez attraper la valeur de retour.

La méthode 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);
16
Jensen

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

Exemple d'utilisation:

DateTime newDate = endDate.AddDays(2);
9
Freeman

Affectez la date de fin à une variable de date car la méthode AddDays renvoie la nouvelle date et l'heure en tant que résultat.

Datetime somedate=endDate.AddDays(2);
6
coder

Utilisez ceci:

DateTime dateTime =  DateTime.Now;
DateTime? newDateTime = null;
TimeSpan numberOfDays = new TimeSpan(2, 0, 0, 0, 0);
newDateTime = dateTime.Add(numberOfDays);
4
Saurabh Mishra

Pourquoi utilisez-vous Int64? AddDays demande l'ajout d'une valeur double-. Ensuite, vous devrez utiliser la valeur de retour de AddDays. Voir ici .

3
bash.d

Vous pouvez ajouter des jours à une date comme celle-ci:

// 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);
2
Nayas Subramanian