Question Datetime en C # ajouter des jours


Je veux ajouter des jours dans une date. 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?


37
2018-03-12 11:27


origine


Réponses:


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

endDate = endDate.AddDays(addedDays);

77
2018-03-12 11:30



Vous devez attraper la valeur de retour.

le DateTime.AddDays méthode 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);

11
2018-03-12 11:28



C'est parce que le AddDays() méthode retourne un nouveau DateTime, que vous n’attribuez ni n’utilisez nulle part.

Exemple d'utilisation:

DateTime newDate = endDate.AddDays(2);

8
2018-03-12 11:28



Attribuez la date de fin à une variable de date car AddDays La méthode renvoie le nouveau Datetime comme résultat.

Datetime somedate=endDate.AddDays(2);

5
2018-03-12 11:33



Pourquoi utilisez-vous Int64? AddDays exige un double-valeur à ajouter. Ensuite, vous devrez utiliser la valeur de retour de AddDays. Voir ici.


2
2018-03-12 11:30



Utilisez ceci:

     DateTime dateTime = new DateTime();
     dateTime = DateTime.Now;
     DateTime newDateTime = new DateTime();
    TimeSpan NumberOfDays = new TimeSpan(2, 0, 0, 0, 0);
    newDateTime = dateTime.Add(NumberOfDays);

1
2017-10-05 16:00