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 un 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 persuadé que je peux utiliser -1 dans une opération d'ajout pour soustraire des jours, mais comme ma question le montre, ce n'est pas le cas pour ce que je tente de faire.
Cette erreur se produit généralement lorsque vous essayez de soustraire un intervalle de DateTime.MinValue
ou que vous souhaitez ajouter quelque chose à DateTime.MaxValue
(ou que vous essayez d'instancier une date en dehors de cet intervalle min-max). Êtes-vous sûr de ne pas attribuer MinValue
quelque part?
DateTime dateForButton = DateTime.Now.AddDays(-1);
Tu peux faire:
DateTime.Today.AddDays(-1)
Vous pouvez utiliser le code suivant:
dateForButton = dateForButton.Subtract(TimeSpan.FromDays(1));
J'ai eu des problèmes avec AddDays (-1) .
Ma solution est TimeSpan.
DateTime.Now - TimeSpan.FromDays(1);
L'objet (c'est-à-dire la variable de destination) de la méthode AddDays ne peut pas être identique à la source.
Au lieu de:
DateTime today = DateTime.Today;
today.AddDays(-7);
Essayez ceci à la place:
DateTime today = DateTime.Today;
DateTime sevenDaysEarlier = today.AddDays(-7);
La dateTime.AddDays(-1)
ne soustrait pas ce jour de la référence dateTime
. Il renverra une nouvelle instance avec cette journée soustraite de la référence d'origine.
DateTime dateTime = DateTime.Now;
DateTime otherDateTime = dateTime.AddDays(-1);
Utiliser AddDays(-1)
a fonctionné pour moi jusqu'à ce que j'essaye de traverser des mois. Lorsque j'ai essayé de soustraire 2 jours au 2017-01-01, le résultat était 2016-00-30. Il ne pouvait pas gérer le changement de mois correctement (même si l'année semblait bien se passer).
J'ai utilisé date = Convert.ToDateTime(date).Subtract(TimeSpan.FromDays(2)).ToString("yyyy-mm-dd");
et n'ai aucun problème.