Что означает исключение в приложении C #: «Не разрешена дата OleAut»? - PullRequest
16 голосов
/ 22 ноября 2008

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

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

Ответы [ 6 ]

20 голосов
/ 22 ноября 2008

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

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

DateTime.FromOADate

DateTime.ToOADate

14 голосов
/ 22 ноября 2008

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).

0 голосов
/ 05 ноября 2015

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

0 голосов
/ 12 декабря 2008

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

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 голосов
/ 22 ноября 2008

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

0 голосов
/ 22 ноября 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...