2012-12-04 23 views
10

私が持っている期待していメソッド2つの日時のパラメータ非表現のDateTime

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

私は、これは、このエラーが発生した

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

paramsは送信しています:

System.ArgumentOutOfRangeExceptionがします:加算または減算された値は、表現不能なDateTimeになります。

何が問題になりますか?

答えて

22

new DateTime()DateTime.MinValueある01/01/0001 00:00:00です。

それから1時間を引いています。あなたはTimeTo値から時間を減算しようとしている推測

new DateTime()DateTimeを作成

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

Yeh !!私もそれに構造体。それはdatetimeのデフォルトのインスタンスを証明した日時のMinValueを証明しました! – UJS

12

new DateTime()は、最小表現可能なDateTimeを返します。この結果に-1時間を追加すると、表現できないDateTimeが得られます。あなたはおそらくDateTime TimeFrom = TimeTo.AddHours(-1);

5

試したい

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

はあなたにDateTime.MinValueDateTimeを与える...ここからあなたが実際に何かを引くことができません...それ以外の場合は例外が発生します... MSDN

0

TimeFromには、-1を追加できないdatetimeが格納されています。あなたはそれらの両方が同じ結果を得

DateTime TimeFrom = TimeTo .AddHours(-1); 

または

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

を呼び出すことができます。

1

日付または時刻のデータを探します。日付または時刻の桁数が不十分です。例の日付は、180203のように8桁の20140604と6桁でなければなりません。このため、getiingエラーです。 このエラーも出て、時間18000を見つけ、これを180000の問題解決に変更します。

関連する問題