it-swarm.com.ru

Что означает исключение в приложении C #: «Не разрешена дата OleAut»?

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

Недопустимая дата OleAut

14
leora

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

Начните с поиска любого использования методов:

DateTime.FromOADate

DateTime.ToOADate

19
xyz

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

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

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

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

13
Joe

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

0
bugmagnet

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

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

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

0
lc.

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

0
warren caulton

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

0
Robert Gamble