2009-07-08 40 views
2

當從GroupWise中獲取約會列表時,檢索到的約會對象中的某些日期與GroupWise中的值不匹配,實際上它們在未來超過50年。例如在下面的方法,我期待的約會開始或之後2000年1月1日午夜,2010年12月或之前31日結束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

好的 - 情節變濃了。實際日期和報告日期之間的差異通常對於一個會話是相同的,但通常會發生變化 - 到目前爲止差異已經(以天爲單位)(5dp)21245.55278,16378.13727和6290.71832 – 2009-07-09 11:53:41

回答

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簽署/無符號轉換某處問題?

2

我找到了解決這個問題的辦法。我不太清楚爲什麼,但是當從列表中加載數據到我的數據類型導致仍然在列表中的數據被損壞。通過改變它加載到POCO中,問題就消失了。