2010-11-23 10 views
3

저는 하루 종일 목록 웹 서비스 및 GetListItems 메서드를 사용하여 수정 된 필드를 기반으로 요소를 필터링하는 쿼리를 디버그하여 마지막으로 확인한 이후 수정 된 요소 만 가져오고 있습니다. 나는 목록에서 하나 개의 요소가 명확하게 UTC에 지정된,이 날짜 이후에 수정 된 이후이 아무것도 반환 이유를 알아내는 문제를 했어WSS3.0 웹 서비스 쿼리의 버그입니까?

<Where> 
    <Gt> 
    <FieldRef Name="Modified" /> 
    <Value Type="DateTime" IncludeTimeValue="TRUE">2010-11-23T17:0:00Z</Value> 
    </Gt> 
</Where> 

: 여기

쿼리 매개 변수입니다. 이는 UTC (옵션 매개 변수에도 적용됨)로 지정할 수 있지만 Sharepoint는 문자 그대로 사이트 설정에 지정된 로캘로 저장되거나 표시된 수정 된 타임 스탬프와 비교합니다.

잘 모르겠습니다. 예 :
내가 조회하는 사이트는 EST 로캘이며, 최신 요소는 오늘 12시 11 분 00 초에 17로 수정되었습니다. : 12 : 00Z.

나는 마지막 그리니치 표준시 오후 4시에서 업데이트를 확인, 그래서 내 쿼리 매개 변수는 다음이 포함됩니다 :

<Where> 
    <Gt> 
    <FieldRef Name="Modified" /> 
    <Value Type="DateTime" IncludeTimeValue="TRUE">2010-11-23T16:00:00Z</Value> 
    </Gt> 
</Where> 

을 및 SharePoint 16 비교하기 때문에이 값을 반환하지 않습니다 : 12시 11분 0초과 00Z : 00 따라서 16 : 00 : 00Z 이후에는 업데이트가 없습니다.

나는이 질문에 12 : 10 : 00Z를 넣음으로써이를 확인했으며, 내가 원하는 목록 요소를 얻었다. 12시 : 12시 00 분을 넣으면 더 이상 결과에 없습니다.

제 질문은 WSS 3.0의 버그입니까? 아니면 제가 잘못된 것입니까? 그렇다면이 문제를 해결하려면 어떻게해야합니까? BTW, 나는 내 시간을 UTC로 유지하고 사용자가 사이트의 설정으로하는 일을 제어 할 수 없습니다. 웹 서비스를 사용하여 사이트에서 사용하는 로케일을 검색하는 방법이 있습니까?


업데이트 : 이 솔루션 Is there a way to get a Sharepoint site's locale with web services?를 참조하십시오.

+1

왜 제안을 답변으로 제출하지 않으십니까? –

답변

1

그 버그인지 잘 모르겠지만, 내가 여기에 해결 방법을 찾을 : 당신이 사이트의 로케일과 UTC 타협 오프셋 때 단지 당신이 원하는 UTC 시간 오프셋을 적용,
Is there a way to get a Sharepoint site's locale with web services?

을 필터링하여 쿼리 노드에 삽입하십시오.

ndQuery.InnerXml = "<Where><Gt><FieldRef Name='Modified' />" + 
    "<Value Type='DateTime' IncludeTimeValue='TRUE'>" + (last_update + offset).ToString("yyyy-MM-dd") + " " + (last_update + offset).ToString("HH:mm:ss") + "</Value></Gt></Where>";