2009-07-08 2 views
2

При получении списка назначений из GroupWise некоторые даты в найденных объектах назначения не соответствуют значениям в GroupWise, на самом деле они более 50 лет в будущем , Например, в следующем методе Чай назначения, начиная с или после первого Jan 2000 полуночи и заканчивающегося или до 31 декабря 2010 года 23: 59: 59: -Назначения GroupWise неправильно,> 50 лет в будущем

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 минут в будущем. Что более странно, так это то, что это не происходит каждый раз, когда вы их извлекаете!

Кто-нибудь испытал это раньше и нашел ли они решение?

+0

ОК - сюжет сгущается. Разница между фактической датой и отчетной датой обычно одинакова для сессии, но часто изменяется - до сих пор различия были (в днях до 5 д.п.) 21245.55278, 16378.13727 и 6290.71832 –

ответ

1

Вы сталкиваетесь с проблемой 32-битного времени? Обычно CTIME, 32-битное время, отсчитывается как секунды с 1 января 1970 года, мигающий плюс одна секунда, GMT. В зависимости от того, как он реализован, это может быть знак целого числа, что означает, что вы можете ссылаться на даты до 1970 года, или он может не считаться подписанным, и в этом случае он может перейти во вторую половину 32-битного пространства (верхний 2000000000).

CTIME подписан, истекает в 2037/2038 (февраль 2038? Что-то в этом роде). CTIME неподписанный, в принципе должен быть хорош еще на 68 лет? (2038-1970 = 68 лет).

Возможно ли, что вы отключены на 68 лет, а не 58 лет, и что это проблема CTIME, подписанная/неподписанная, где-то проблема?

2

Я нашел решение этой проблемы. Я не совсем уверен, почему, но при загрузке данных из списка в мой тип данных происходит повреждение данных, находящихся в списке. Изменив его для загрузки в POCO, проблема исчезла.

Смежные вопросы