Это означает, что где-нибудь в программе пытается преобразовать в или с Даты Автоматизации OLE вне допустимого диапазона 1 января 4713 до н.э до 31 декабря 9 999 AD. Это, возможно, проскользнуло через, потому что Даты Автоматизации OLE представлены как двойной .
Запускаются путем поиска любого использования методов:
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).
Я использовал:
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) { }
для контакта с той же проблемой я имею. Это выдает исключение, когда мы проверяем год в мой случай. Выполнение ничего в недопустимую дату является точно поведением, которое я хочу, таким образом, это халтуры.
Это означает обеспечение недопустимой даты где-нибудь, пытаясь преобразовать в или с даты Автоматизации OLE вне допустимого диапазона 1 января 4713 до н.э до 31 декабря 9 999 AD. Возможная причина состоит в том, что это, возможно, проскользнуло через, потому что Даты Автоматизации OLE представлены как двойное.
Другие боролись с этим. Я предлагаю смотреть на эти потоки на DotNetNuke и DevShed.