Назначения 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?

Другие вопросы по тегам