Кто-нибудь знает, что это значит. Получение этого в приложениях winforms С#:
Не законная дата OleAut
Кто-нибудь знает, что это значит. Получение этого в приложениях winforms С#:
Не законная дата OleAut
Это означает, что где-то в программе пытается конвертировать в или из даты автоматизации OLE вне допустимого диапазона с 1 января по 4713 г. до н.э. до 31 декабря-9999 г. н.э. Возможно, он проскользнул, потому что даты OLE Automation Dates представлены как double.
Начните с поиска любых применений методов:
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).
Это означает, что вы где-то указали неверную дату, пытаясь преобразовать дату или дату OLE Automation за пределы допустимого диапазона с 1 января по 4713 г. до 31 декабря-9999 г. н.э. Возможная причина в том, что она могла проскользнуть, потому что даты автоматизации OLE представлены как двойные.
Другие боролись с этим. Я предлагаю посмотреть эти потоки на DotNetNuke и DevShed.
Я использовал:
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) { }
чтобы справиться с той же проблемой, что и у меня. Он выдает исключение, когда мы проверяем год в моем случае. Нечего делать в недопустимой дате - это именно то, что я хочу, поэтому этот хак работает.
Я обнаружил, что столбец с большим row_id '257381195' пытался прочитать Excel в качестве даты. То, что я закончил, изменило данные столбца на строку, предшествующую row_id с одной цитатой. Это решило мою проблему. Надеюсь, это поможет.