Назначения GroupWise неверно датированы, >50 лет спустя
При извлечении списка встреч из GroupWise некоторые даты в извлеченных объектах встреч не совпадают со значениями в GroupWise, фактически в будущем они будут более 50 лет. Например, в следующем методе я ищу встречи, начинающиеся в полночь 1 января 2000 года или после этой даты и заканчивающиеся 31 декабря 2010 года или позднее 23:59:59:-
public List<Appointment2> GetGroupWiseAppointments()
{
Application2Class gwApp = new Application2Class();
Account gwAccount = gwApp.Login(Type.Missing, Type.Missing, LoginConstants.egwPromptIfNeeded, Type.Missing, Type.Missing);
Folder gwCalendar = gwAccount.Calendar;
List<Appointment2> appointments = new List<Appointment2>();
MessageList gwAppointments = gwCalendar.Messages.Find("( APPOINTMENT AND BOX_TYPE = INCOMING AND START_DATE >= 2000/1/1 AT 0:0:0 AND DUEEND_DATE <= 2010/12/31 AT 23:59:59 )");
foreach(Appointment2 gwAppointment in gwAppointments)
{
appointments.Add(gwAppointment);
}
}
В моих тестовых данных все встречи датируются в течение 2 недель с сегодняшнего дня, но возвращенные объекты через 58 лет 3 месяца 1 день 13 часов и 16 минут в будущем. Что еще более странно, это происходит не каждый раз, когда вы их извлекаете!
Кто-нибудь испытывал это раньше, и нашли ли они решение?
2 ответа
Я нашел решение этой проблемы. Я не совсем уверен, почему, но при загрузке данных из Списка в мой тип данных были повреждены все еще находящиеся в списке данные. Изменив его для загрузки в POCO, проблема ушла.
Вы сталкиваетесь с проблемой 32-битного времени? Обычно CTIME, 32-битное время, отсчитывается как секунды с 1 января 1970 года, mignight плюс одна секунда, время по Гринвичу. В зависимости от того, как это реализовано, это может быть целое число знака, что означает, что вы можете ссылаться на даты до 1970 года, или оно может не считаться подписанным, и в этом случае оно может переходить во вторую половину 32-битного пространства (верхний 2000000000).
CTIME подписан, заканчивается в 2037/2038 (февраль 2038? Что-то в этом роде). CTIME без знака, в принципе должно быть хорошо еще 68 лет? (2038-1970 = 68 лет).
Возможно ли, что вы перешли на 68, а не на 58 лет, и что это проблема конвертации подписанного / неподписанного в CTIME?