2012-12-04 14 views
10

Ich habe Methode, die zwei Datetime erwartet Parameterun-darstellbare Datetime

public void SomeReport(DateTime TimeFrom, DateTime TimeTo) 
{ 
    // ommited 
    TimeFrom.ToString("ddMMyy"), TimeTo.ToString("ddMMyy"))); 
    // ommited 
} 

Wenn ich schicke diese params

DateTime TimeTo = DateTime.Now; 
DateTime TimeFrom = new DateTime().AddHours(-1); 

Dieser Fehler ist aufgetreten:

System.ArgumentOutOfRangeException: Der hinzugefügte oder subtrahierte Wert führt zu einer nicht darstellbaren DateTime.

Was kann das Problem sein?

Antwort

22

new DateTime() ist 01/01/0001 00:00:00 die auch DateTime.MinValue ist.

Sie subtrahieren eine Stunde davon.

Erraten Sie versuchen, eine Stunde vom TimeTo Wert zu subtrahieren:

var TimeFrom = TimeTo.AddHours(-1); 
+0

Yeh !! Ich auch struct in es .Got it tat Standardinstanz von datetime provede MinValue von datetime! – UJS

12

new DateTime() liefert das minimal darstellbare DateTime; Hinzufügen von -1 Stunden zu diesem Ergebnis in DateTime, die nicht dargestellt werden können.

Sie wollen wahrscheinlich DateTime TimeFrom = TimeTo.AddHours(-1);

5

Versuch:

DateTime TimeTo = DateTime.Now; 
DateTime TimeFrom = TimeTo.AddHours(-1); 
1

ein DateTime mit new DateTime() Schaffung gibt Ihnen eine DateTime mit DateTime.MinValue ... daraus Sie eigentlich nichts subtrahieren kann ... sonst erhalten Sie die Ausnahme, die Sie bekommen ... MSDN

0

In Ihrem Fall sehen TimeFrom die Datumzeit, von dem hält -1 nicht hinzugefügt werden kann. Sie können entweder

DateTime TimeFrom = TimeTo .AddHours(-1); 

oder

DateTime TimeFrom = new DateTime().now.AddHours(-1); 

Beide liefern das gleiche Ergebnis aufrufen.

1

Suchen Sie Datum oder Uhrzeit Daten. Es gibt nicht genügend Ziffern für Datum oder Uhrzeit Beispiel Datum muss 8 Ziffern 20140604 sein und Zeit 6 Stellen wie diese 180203.For diesem Grund erhalten Sie Fehler. ich bekomme diesen Fehler auch und finde die Zeit 18000 und ändere dies auf 180000 Problem gelöst.

Verwandte Themen