【问题标题】:GroupWise appointments incorrectly dated, >50 years in the futureGroupWise 约会的日期不正确,未来 > 50 年
【发布时间】:2009-07-08 15:36:21
【问题描述】:

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

以前有没有人遇到过这种情况并找到解决方案?

【问题讨论】:

  • 好的 - 情节变厚了。实际日期和报告日期之间的差异对于会话通常是相同的,但经常会发生变化 - 到目前为止,差异已经(以 5dp 为单位)21245.55278、16378.13727 和 6290.71832

标签: c# api novell groupwise


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    您是否遇到了 32 位时间问题?通常 CTIME 是 32 位时间,自 1970 年 1 月 1 日以来的秒数,加一秒,格林威治标准时间。根据它的实现方式,它可能是一个有符号整数,这意味着您可以引用 1970 年之前的日期,或者它可能不被视为有符号,在这种情况下,它可以进入 32 位空间的后半部分(上半部分) 20 亿)。

    CTIME 已签约,将于 2037/2038 年到期(2038 年 2 月?类似的事情)。 CTIME未签名,原则上应该再好68年? (2038-1970 = 68 年)。

    您是否有可能提前 68 年而不是 58 年,并且这是某个 CTIME 有符号/无符号转换的问题?

    【讨论】:

      猜你喜欢
      • 2020-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-25
      • 1970-01-01
      • 1970-01-01
      • 2020-02-11
      相关资源
      最近更新 更多