Un-Representable DateTime

У меня есть метод, который ожидает два параметра 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);

Эта ошибка произошла:

System.ArgumentOutOfRangeException: добавленное или вычитаемое значение приводит к не представимому DateTime.

В чем может быть проблема?

Ответ 1

new DateTime() 01/01/0001 00:00:00, который также является DateTime.MinValue.

Вы вычитаете один час из этого.

Угадав, что вы пытаетесь вычесть час из значения TimeTo:

var TimeFrom = TimeTo.AddHours(-1);

Ответ 2

new DateTime() возвращает минимальное представимое DateTime; добавление -1 часов к этому приводит к DateTime, который не может быть представлен.

Вероятно, вы хотите DateTime TimeFrom = TimeTo.AddHours(-1);

Ответ 3

попробовать:

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

Ответ 4

создание DateTime с new DateTime() дает вам DateTime с DateTime.MinValue... из этого вы фактически не можете вычесть что-либо... иначе вы получите исключение, которое вы получили... см. MSDN

Ответ 5

Посмотрите данные даты или времени. Недостаточно цифр для даты или времени. Пример даты должен быть 8 цифр 20140604 и время 6 цифр, как этот 180203. По этой причине вы получаете ошибку. Я тоже получаю эту ошибку и нахожу время 18000 и меняю это на проблему с 180000.

Ответ 6

В вашем случае TimeFrom содержит дату и время, из которых -1 нельзя добавить. Вы можете либо вызвать

DateTime TimeFrom = TimeTo .AddHours(-1);

или

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

Оба они дают тот же результат.