Значение исключения в приложении C#: “Не легальная дата OleAut”?

17
задан Reza Aghaei 5 November 2015 в 22:10
поделиться

5 ответов

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

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

DateTime. FromOADate

DateTime. ToOADate

21
ответ дан 30 November 2019 в 12:01
поделиться

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

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

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

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

14
ответ дан 30 November 2019 в 12:01
поделиться

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

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
ответ дан 30 November 2019 в 12:01
поделиться

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

0
ответ дан 30 November 2019 в 12:01
поделиться

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

0
ответ дан 30 November 2019 в 12:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: