2010-11-23 1 views
3

私は、リストWebサービスとGetListItemsメソッドを使用してModifiedフィールドに基づいて要素をフィルタリングするクエリをデバッグするために一日中苦労していました。私は、リスト内の1つの要素が明確にUTCで指定された、この日付以降に変更されたので、これは何も返されない理由を考え出すのトラブルを持っていたこれはWSS3.0 Webサービスのクエリのバグですか?

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

:ここ

は、クエリパラメータです。これは、UTCで指定しますが(optionsパラメータでも指定されていますが)、Sharepointは文字通り、サイト設定で指定されたロケールで保存または表示された変更されたタイムスタンプと比較します。

私はわかりませんので、ここに例があります:
私が照会しているサイトはESTロケールにあり、最新の要素は今日12:11:00に変更されました.17 :12:00Z。

私は最後ので、私のクエリパラメータには、次が含まれます、午後4時GMTでアップデートをチェック:

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

とSharePointが16比較しているため、これは任意の値を返しません:00:午前12時11分00秒で00Z文字通り16:00:00Z以降は更新されません。

これを確認するには、クエリに12:10:00Zを入れて、私が望むリスト要素を取得します。 12:12:00Zを入力してください。結果はこれ以上ありません。

私の質問は、WSS 3.0のバグですか、何か間違っているのでしょうか?もしそうなら、これを修正するにはどうすればよいですか?ところで、私は保存された時間をUTCで保存したいし、ユーザーがサイトの設定で何をするかを制御することはできません。 Webサービスを使用してサイトで使用されるロケールを取得する方法はありますか?


更新: は、ソリューションのIs there a way to get a Sharepoint site's locale with web services?を参照してください。

+1

あなたの提案を回答としてお答えください。 –

答えて

1

それはバグだ場合、私は知らないが、私はここに回避策が見つかりました:あなただけ適用したいUTC時刻にオフセット、サイトのロケールおよびUTC betwenオフセットしているとき
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>"; 
関連する問題