接著上一篇Query Options的一些用法(3): 分頁,這一篇也是介紹一下Lists.GetListItems方法文檔上已經存在的一個:DateInUtc。
DateInUtc |
TRUE to return dates in Coordinated Universal Time (UTC) format. FALSE to return dates in ISO format. This element is optional, and its default value is False.(注意,這裡文檔在SharePoint2010環境下錯誤了,預設值應該是FALSE。見下面樣本。) |
首先先運行下沒有傳入Query Options的方法。
static void Main(string[] args)
{
Lists client = new Lists();
client.Url = webUrl + "/_vti_bin/lists.asmx";
client.Credentials = System.Net.CredentialCache.DefaultCredentials;
XmlNode resultNode = client.GetListItems(listName, String.Empty, QueryAll, ViewFields, "1", null, String.Empty);
Console.ReadLine();
}
得到如下結果,注意看建立和修改時間,發現這裡並沒有使用UTC時間,所以預設值應該是FALSE。
<rs:data ItemCount="1" ListItemCollectionPositionNext="Paged=TRUE&p_ID=1" xmlns:rs="urn:schemas-microsoft-com:rowset">
<z:row ows_Title="Test01" ows_Attachments="1" ows_Author="1;#Qin, Lei (Lambert, ES-Apps-GD-China-SH)" ows_Editor="1;#Qin, Lei (Lambert, ES-Apps-GD-China-SH)" ows_MetaInfo="1;#" ows__ModerationStatus="0" ows__Level="1" ows_ID="1" ows_UniqueId="1;#{E1F2046C-16AC-4650-8EE3-73E12ED5E833}" ows_owshiddenversion="4" ows_FSObjType="1;#0" ows_Created="2012-11-30 15:37:17" ows_PermMask="0x7fffffffffffffff" ows_Modified="2012-12-13 10:42:20" ows_FileRef="1;#teams/smetechcom/Lists/QueryOptionsDemo/1_.000" xmlns:z="#RowsetSchema" />
</rs:data>
這裡,我使用<DateInUtc>FALSE</DateInUtc>進行驗證,發現的確如此。
static XmlNode QueryOptions
{
get
{
XmlElement queryOptions = _camlDoc.CreateElement("QueryOptions");
queryOptions.InnerXml = "<DateInUtc>FALSE</DateInUtc>";
return queryOptions;
}
}
static void Main(string[] args)
{
Lists client = new Lists();
client.Url = webUrl + "/_vti_bin/lists.asmx";
client.Credentials = System.Net.CredentialCache.DefaultCredentials;
XmlNode resultNode = client.GetListItems(listName, String.Empty, QueryAll, ViewFields, "1", QueryOptions, String.Empty);
Console.ReadLine();
}
<rs:data ItemCount="1" ListItemCollectionPositionNext="Paged=TRUE&p_ID=1" xmlns:rs="urn:schemas-microsoft-com:rowset">
<z:row ows_Title="Test01" ows_Attachments="1" ows_Author="1;#Qin, Lei (Lambert, ES-Apps-GD-China-SH)" ows_Editor="1;#Qin, Lei (Lambert, ES-Apps-GD-China-SH)" ows_MetaInfo="1;#" ows__ModerationStatus="0" ows__Level="1" ows_ID="1" ows_UniqueId="1;#{E1F2046C-16AC-4650-8EE3-73E12ED5E833}" ows_owshiddenversion="4" ows_FSObjType="1;#0" ows_Created="2012-11-30 15:37:17" ows_PermMask="0x7fffffffffffffff" ows_Modified="2012-12-13 10:42:20" ows_FileRef="1;#teams/smetechcom/Lists/QueryOptionsDemo/1_.000" xmlns:z="#RowsetSchema" />
</rs:data>
最後,設定顯示UTC時間,看看結果有什麼不同。
static XmlNode QueryOptions
{
get
{
XmlElement queryOptions = _camlDoc.CreateElement("QueryOptions");
queryOptions.InnerXml = "<DateInUtc>TRUE</DateInUtc>";
return queryOptions;
}
}
<rs:data ItemCount="1" ListItemCollectionPositionNext="Paged=TRUE&p_ID=1" xmlns:rs="urn:schemas-microsoft-com:rowset">
<z:row ows_Title="Test01" ows_Attachments="1" ows_Author="1;#Qin, Lei (Lambert, ES-Apps-GD-China-SH)" ows_Editor="1;#Qin, Lei (Lambert, ES-Apps-GD-China-SH)" ows_MetaInfo="1;#" ows__ModerationStatus="0" ows__Level="1" ows_ID="1" ows_UniqueId="1;#{E1F2046C-16AC-4650-8EE3-73E12ED5E833}" ows_owshiddenversion="4" ows_FSObjType="1;#0" ows_Created="2012-11-30T07:37:17Z" ows_PermMask="0x7fffffffffffffff" ows_Modified="2012-12-13T02:42:20Z" ows_FileRef="1;#teams/smetechcom/Lists/QueryOptionsDemo/1_.000" xmlns:z="#RowsetSchema" />
</rs:data>
為什麼我們會需要UTC時間?
在我看來主要需要解決的就是一個不同時區的問題。SharePoint中,介面顯示的都是本地時間。每個使用者可以修改自己的顯示時區。如
對於開發人員來說,一旦你忽略了時區,用自己的本地時區去查詢一個和你不同時區的網站資料的時候,查詢結果的數量就會產生問題。
所以推薦使用這個選項,來進行你的每一次查詢。