GroupWise约会的日期不正确,未来> 50年

时间:2009-07-08 15:36:21

标签: c# api novell groupwise

从GroupWise获取约会列表时,检索到的约会对象中的某些日期与GroupWise中的值不匹配,实际上它们将来会超过50年。例如,在下面的方法中,我会查找从2000年1月1日午夜或之后开始到2010年12月31日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 个答案:

答案 0 :(得分:2)

我找到了解决这个问题的方法。我不太清楚为什么,但是当将List中的数据加载到我的数据类型时导致列表中的数据仍然被破坏。通过将其更改为加载到POCO,问题就消失了。

答案 1 :(得分:1)

你是否遇到了32位时间的问题?通常CTIME,32位时间,从1970年1月1日起计算为秒,mignight加一秒GMT。根据它的实现方式,它可能是符号整数,这意味着您可以参考1970年之前的日期,或者它可能不被视为已签名,在这种情况下它可以进入32位空间的后半部分(上部) 20亿)。

CTIME签署,在2037/2038年(2038年2月?用完了)。 CTIME未签约,原则上应该是另一个68年的好? (2038-1970 = 68岁)。

你是否有可能退休68年,而不是58年,并且这是CTIME签名/未签名转换的问题?