2

从 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 分钟。更奇怪的是,并非每次检索它们时都会发生这种情况!

有没有人经历过这种情况并且他们找到了解决方案?

4

2 回答 2

2

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

于 2009-07-30T10:27:25.290 回答
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 签名/未签名转换的问题?

于 2009-07-08T17:05:13.523 回答