C# - Anzahl der Tage zwischen zwei Datumsangaben problem
Ich habe ein kleines problem mit dem code unten, wird die 'Tag' - variable scheint immer 0 zu sein, egal wie weit auseinander die Tage sind.
Können Sie sehen, was offensichtlich falsch ist?
System.TimeSpan span = dates[0] - dates[1]; //e.g. 12/04/2010 11:44:08 and 18/05/2010 11:52:19
int days = (int)span.TotalDays;
if (days > 10) //days always seems to be 0
{
throw new Exception("Over 10 days");
}
Dank
- Was macht ein ToString() auf die Spannweite sagen?
- Eek Ausnahme, wenn die Eingabewerte nicht korrekt sind. Sollten Sie wieder die Funktion mit einem boolean-wenn die Funktion erfolgreich war getan.
- Einige Zeit ist vergangen, seit Sie schrieb diesen Kommentar, aber du bist völlig falsch hier. Sie sollten wirklich NICHT Wurf C# - code mit Rückgabewert Fehler überprüfen. Das ist es, was Ausnahmen sind für. Ohne Ausnahmen, können Sie nicht die Methodenaufrufe verketten etc. Wenn Sie wirklich wollen, um stress input-Validierung hier, Jamie werfen sollte ArgumentExceptions für Werte, die nicht akzeptabel sind.
- in der Tat, vor langer Zeit. Ich würde ja das argument der Ausnahme. Damals wusste ich nicht besser...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als Sie subtrahieren des späteren aus dem früheren Datum, nach Ihren Kommentaren, TotalDays negativ sein wird. In deinem Beispiel -36.
Daher ein Vergleich der
(days > 10)
fehl. Sie verwenden sollten,Vorausgesetzt, Sie haben nicht die Einstellung von Datum[0] gleich zu Datum[1], gibt es keinen Grund, warum TotalDays werden wieder die null für die Beispiel-Daten haben Sie in Ihren Kommentaren.
Summe der Tage sollte negativ sein, aber in jedem Fall nicht null, führen Sie zieht den früheren Datum, ab dem späteren Zeitpunkt. Es scheint
dates[0]
unddates[1]
sind nicht enthalten, was Sie denken.Ich habe gerade getestet:
Dieses Programm erzeugt die Ausgabe:
-364
. So sollte es perfekt funktionieren!Eine Frage: Hast du
DateTime[]
für diedates
-array?BTW:
days > 10
wird nicht geprüft, obdays
null ist.Wenn wir annehmen, dass dein code sieht genau so aus, und die Daten-array korrekt gefüllt ist, dann es ist nichts falsch hier dazu führen würde, dass die Tage um genau zu sein null. Vielleicht überprüfen Sie, dass Ihre Daten-array die richtigen Werte? Abgesehen von, dass, nach mehr code?
Entweder:
Oder so: