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ビット時間の問題が発生していますか?通常、32ビット時間のCTIMEは、1970年1月1日からの秒数、mignight + 1秒、GMTとしてカウントされます。実装方法によっては、1970年より前の日付を参照できる符号付き整数の場合もあれば、符号付きと見なされない場合もあります。その場合、32ビットスペースの後半(上部)に入る可能性があります。 20億)。

CTIMEが署名し、2037/2038に終了します(2038年2月?そのようなもの)。CTIMEは署名されていませんが、原則として、あと68年間は有効でしょうか?(2038-1970 = 68年)。

58年ではなく68年ずれている可能性はありますか?それはCTIMEの符号付き/符号なし変換のどこかで問題になっている可能性がありますか?

于 2009-07-08T17:05:13.523 に答える