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 entraîne 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 amené à croire 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 de ce que j'essaie de faire.
DateTime.MinValue
ou que vous souhaitez ajouter quelque choseDateTime.MaxValue
(ou que vous essayez d'instancier une date en dehors de cet intervalle min-max). Êtes-vous sûr de ne pas attribuerMinValue
quelque part?Réponses:
Cette erreur se produit généralement lorsque vous essayez de soustraire un intervalle de
DateTime.MinValue
ou que vous souhaitez ajouter quelque choseDateTime.MaxValue
(ou que vous essayez d'instancier une date en dehors de cet intervalle min-max). Êtes-vous sûr de ne pas attribuerMinValue
quelque part?la source
la source
Tu peux faire:
la source
Vous pouvez utiliser le code suivant:
la source
Le
dateTime.AddDays(-1)
ne soustrait pas ce jour de ladateTime
référence. Il renverra une nouvelle instance, avec ce jour soustrait de la référence d'origine.la source
J'ai eu des problèmes avec AddDays (-1) .
Ma solution est TimeSpan .
la source
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:
Essayez plutôt ceci:
la source
Au lieu de réduire directement le nombre de jours à partir de l'objet de date, obtenez d'abord la valeur de la date, puis soustrayez les jours. Voir l'exemple ci-dessous:
Ici, someDate est une variable de type DateTime.
la source
En utilisant
AddDays(-1)
fonctionné pour moi jusqu'à ce que j'essaye de traverser des mois. Lorsque j'ai essayé de soustraire 2 jours du 01/01/2017, le résultat était 2016-00-30. Il ne pouvait pas gérer correctement le changement de mois (même si l'année semblait bien).J'ai utilisé
date = Convert.ToDateTime(date).Subtract(TimeSpan.FromDays(2)).ToString("yyyy-mm-dd");
et n'ai aucun problème.la source