Значение исключения в приложении С#: "Не законная дата OleAut"?

Кто-нибудь знает, что это значит. Получение этого в приложениях winforms С#:

Не законная дата OleAut

Ответ 1

Это означает, что где-то в программе пытается конвертировать в или из даты автоматизации OLE вне допустимого диапазона с 1 января по 4713 г. до н.э. до 31 декабря-9999 г. н.э. Возможно, он проскользнул, потому что даты OLE Automation Dates представлены как double.

Начните с поиска любых применений методов:

DateTime.FromOADate

DateTime.ToOADate

Ответ 2

OADate представляется как двойное значение, значение которого - количество дней с полуночи 30 декабря 1899 года (отрицательные значения, представляющие более ранние даты).

Это исключение возникает при попытке конвертировать значение, которое находится за пределами допустимого диапазона дат Ole Automation, в/из значения .NET DateTime (методы DateTime.FromOADate и DateTime.ToOADate), которые также используются неявно для COM Interop).

Я считаю, что для преобразования в OADate значение .NET DateTime должно быть строго больше 01/01/0100.

Чтобы преобразовать из OADate значение .NET DateTime, двойное значение должно быть строго больше -657435 (= 01/01/0100) и строго меньше 2958466.0 (01/01/10000).

Ответ 3

Это означает, что вы где-то указали неверную дату, пытаясь преобразовать дату или дату OLE Automation за пределы допустимого диапазона с 1 января по 4713 г. до 31 декабря-9999 г. н.э. Возможная причина в том, что она могла проскользнуть, потому что даты автоматизации OLE представлены как двойные.

Ответ 4

Другие боролись с этим. Я предлагаю посмотреть эти потоки на DotNetNuke и DevShed.

Ответ 5

Я использовал:

try
{
    if (folderItem.ModifyDate.Year != 1899)
    {
        this.FileModifiedDate = folderItem.ModifyDate.ToShortDateString() + 
            " " +
            folderItem.ModifyDate.ToLongTimeString();
    }
}
//we need this because it throws an exception if it an invalid date...
catch (ArgumentException) { } 

чтобы справиться с той же проблемой, что и у меня. Он выдает исключение, когда мы проверяем год в моем случае. Нечего делать в недопустимой дате - это именно то, что я хочу, поэтому этот хак работает.

Ответ 6

Я обнаружил, что столбец с большим row_id '257381195' пытался прочитать Excel в качестве даты. То, что я закончил, изменило данные столбца на строку, предшествующую row_id с одной цитатой. Это решило мою проблему. Надеюсь, это поможет.