2009-07-08 1 views
2

GroupWise에서 약속 목록을 가져올 때 검색된 약속 개체의 일부 날짜가 GroupWise의 값과 일치하지 않습니다. 실제로 향후 50 년 이상입니다 . 내 테스트 데이터에 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); 
    } 
} 

모든 약속

일자된다 - : 59 : 59 : 다음과 같은 방법의 예를 들어 내가 약속 23 또는 2000년 1월 1일 자정 이후부터 2010 년 12 월 또는 31 일 이전에 종료 찾아 오늘부터 2 주 이내에 반환 된 개체는 향후 58 년 3 개월 1 일 13 시간 16 분입니다. 더 이상한 것은 이것이 당신이 그들을 검색 할 때마다 일어나지 않는다는 것입니다!

경험이있는 사람이 누구일까요? 해결책을 찾은 적이 있습니까?

+0

Ok - 플롯이 두꺼워집니다. 실제 날짜와보고 된 날짜의 차이는 일반적으로 세션에서 동일하지만 종종 변경됩니다 - 지금까지 차이점은 (212dpi에서 5dp까지) 21245.55278, 16378.13727 및 6290.71832 –

답변

1

32 비트 시간 문제가 있습니까? 일반적으로 CTIME (32 비트 시간)은 1970 년 1 월 1 일부터 초로 계산됩니다 (미그닛에 1 초 GMT 사용). 구현 방법에 따라 1970 년 이전의 날짜를 참조 할 수도 있고 서명 된 것으로 간주되지 않을 수도 있음을 의미하는 부호 정수 일 수 있습니다.이 경우 32 비트 공간의 두 번째 절반 (상단 20 억).

서명 된 CTIME은 2037 년 3 월 2038 년 2 월 (2038 년 2 월? 그런 식으로)에 만료됩니다. 원칙적으로 서명하지 않은 CTIME은 68 년 동안 더 좋을 것입니다. (2038-1970 = 68 세).

68 세가 아니고 58 세가 아니며 CTIME 서명/서명되지 않은 변환이 어딘가에 문제가 될 수 있습니까?

2

이 문제에 대한 해결책을 찾았습니다. 필자는 왜 목록에서 데이터를 내 데이터 유형으로로드 할 때 목록에있는 데이터가 손상 될지 확실하지 않습니다. POCO에로드되도록 변경하여 문제가 해결되었습니다.