205 votes

Soustraire des jours à une DateTime

J'ai le code suivant dans mon programme C#.

DateTime dateForButton =  DateTime.Now;  
dateForButton = dateForButton.AddDays(-1);  // ERROR: un-representable DateTime

Chaque fois que je l'exécute, j'obtiens l'erreur suivante :

La valeur ajoutée ou soustraite donne une DateTime non représentable.
Nom du paramètre : valeur

Je n'ai jamais vu ce message d'erreur auparavant et je ne comprends pas pourquoi je le vois. D'après les réponses que j'ai lues jusqu'à présent, je suis amené à croire que je peux utiliser -1 dans une opération d'addition pour soustraire des jours, mais comme le montre ma question, ce n'est pas le cas pour ce que j'essaie de faire.

8voto

Sambhav jain Points 684

Au lieu de diminuer directement le nombre de jours à partir de l'objet date, il faut d'abord obtenir la valeur de la date, puis soustraire les jours. Voir l'exemple ci-dessous :

DateTime SevenDaysFromEndDate = someDate.Value.AddDays(-1);

Ici, someDate est une variable de type DateTime.

6voto

Mark Benson Points 61

L'objet (c'est-à-dire la variable de destination) de la méthode AddDays ne peut pas être le même que la source.

Au lieu de :

DateTime today = DateTime.Today;
today.AddDays(-7);

Essayez plutôt ceci :

DateTime today = DateTime.Today;
DateTime sevenDaysEarlier = today.AddDays(-7);

6voto

J'ai rencontré des problèmes en utilisant AddDays(-1) .

Ma solution est la suivante Intervalle de temps .

DateTime.Now - TimeSpan.FromDays(1);

-1voto

Ainsley Hobart Points 7

Utilisation AddDays(-1) Cela a fonctionné pour moi jusqu'à ce que j'essaie de traverser les mois. Lorsque j'ai essayé de soustraire 2 jours à 2017-01-01, le résultat était 2016-00-30. Il ne pouvait pas gérer correctement le changement de mois (bien que l'année semblait être correcte).

J'ai utilisé date = Convert.ToDateTime(date).Subtract(TimeSpan.FromDays(2)).ToString("yyyy-mm-dd"); et n'ont aucun problème.

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