Ich habe den folgenden Code in meinem C # -Programm.
DateTime dateForButton = DateTime.Now;
dateForButton = dateForButton.AddDays(-1); // ERROR: un-representable DateTime
Immer wenn ich es ausführe, wird folgende Fehlermeldung angezeigt:
Der addierte oder subtrahierte Wert führt zu einer nicht darstellbaren DateTime.
Parametername: Wert
Ich habe diese Fehlermeldung noch nie gesehen und verstehe nicht, warum ich sie sehe. Aus den Antworten, die ich bisher gelesen habe, geht hervor, dass ich -1 in einer Additionsoperation verwenden kann, um Tage zu subtrahieren, aber wie meine Frage zeigt, ist dies bei dem, was ich versuche, nicht der Fall.
DateTime.MinValue
oder etwas hinzuzufügenDateTime.MaxValue
(oder wenn Sie versuchen, ein Datum außerhalb dieses Min-Max-Intervalls zu instanziieren). Sind Sie sicher, dass Sie nichtMinValue
irgendwo zuweisen ?Antworten:
Dieser Fehler tritt normalerweise auf, wenn Sie versuchen, ein Intervall von zu subtrahieren
DateTime.MinValue
oder etwas hinzuzufügenDateTime.MaxValue
(oder wenn Sie versuchen, ein Datum außerhalb dieses Min-Max-Intervalls zu instanziieren). Sind Sie sicher, dass Sie nichtMinValue
irgendwo zuweisen ?quelle
quelle
Du kannst tun:
quelle
Sie können den folgenden Code verwenden:
quelle
Das
dateTime.AddDays(-1)
subtrahiert diesen einen Tag nicht von derdateTime
Referenz. Es wird eine neue Instanz zurückgegeben, wobei dieser eine Tag von der ursprünglichen Referenz abgezogen wird.quelle
Ich hatte Probleme mit AddDays (-1) .
Meine Lösung ist TimeSpan .
quelle
Das Objekt (dh die Zielvariable) für die AddDays-Methode kann nicht mit der Quelle identisch sein.
Anstatt:
Versuchen Sie stattdessen Folgendes:
quelle
Verwenden von
AddDays(-1)
hat bei mir funktioniert, bis ich versucht habe, Monate zu überqueren. Als ich versuchte, 2 Tage vom 01.01.2017 abzuziehen, war das Ergebnis 2016-00-30. Es konnte die Monatsänderung nicht richtig handhaben (obwohl das Jahr in Ordnung zu sein schien).Ich habe verwendet
date = Convert.ToDateTime(date).Subtract(TimeSpan.FromDays(2)).ToString("yyyy-mm-dd");
und habe keine Probleme.quelle
Anstatt die Anzahl der Tage direkt vom Datumsobjekt direkt zu verringern, erhalten Sie zuerst den Datumswert und subtrahieren dann die Tage. Siehe Beispiel unten:
Hier ist someDate eine Variable vom Typ DateTime.
quelle