2012-12-04 10 views
10

Mam metoda, która przewiduje dwa parametry datetimeun-zakodowania DateTime

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

Kiedy wysyłam ten params

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

ten błąd:

System.ArgumentOutOfRangeException: Dodana lub odjęta wartość powoduje, że nie można przedstawić daty DateTime.

Jaki może być problem?

Odpowiedz

22

new DateTime() jest 01/01/0001 00:00:00 który jest również DateTime.MinValue.

Odejmujesz jedną godzinę od tej.

odgadywanie próbujesz odjąć godzinę od wartości TimeTo:

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

Yeh !! Wbudowuję w to również. Pobierz domyślną instancję datetime proven MinValue of datetime! – UJS

12

new DateTime() powraca minimalna zakodowania DateTime; dodanie do tego -1 godzin powoduje, że DateTime nie może być reprezentowany.

Prawdopodobnie chcesz DateTime TimeFrom = TimeTo.AddHours(-1);

5

try:

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

tworząc DateTime z new DateTime() daje DateTime z DateTime.MinValue ... z tego rzeczywiście nie może nic odjąć ... w przeciwnym razie dostaniesz wyjątek, który masz ... zobacz MSDN

0

W twoim przypadku TimeFrom przechowuje datetime, z których -1 nie można dodać. Można też powołać

DateTime TimeFrom = TimeTo .AddHours(-1); 

lub

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

Obaj dają ten sam rezultat.

1

Sprawdź datę lub czas danych. Brak wystarczającej liczby cyfr dla daty lub czasu Przykładowa data musi składać się z 8 cyfr 20140604 i 6 cyfr takich jak ta 180203. Z tego powodu otrzymujesz błąd. również otrzymuję ten błąd i znajduję czas 18000 i zmienię to na 180000 problem rozwiązany.

Powiązane problemy