SharePoint将所有的Datetime类型的数据都以universal的形式(UTC)存储在数据库中,当要在页面上显示类似list item的"Created", "Modified"等时间日期信息时,将数据库中的UTC时间取出来,然后根据当前Site的Regional Setting中设置的时区信息换算成当前的时间,所以我们在页面中看到的是当前时区下的正确时间。可是当我们用Client Object Model,通过CamlQuery 去查询list item的时候, 一旦涉及到Datetime类型的字段的时候就会遇见问题,比如说我要查询今天created的item,我把下面的ViewXML传给SharePoint Server

string today = DateTime.Now.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'", DateTimeFormatInfo.InvariantInfo); 
CamlQuery query = new CamlQuery();
                query.DatesInUtc = true;
                query.ViewXml = @"<View>
                                <Query>
                                  <Where>
                                    <Eq>
                                      <FieldRef Name='Created'/>
                                      <Value Type='DateTime'>" + today + @"</Value>
                                    </Eq>
                                  </Where>
                                </Query>
                              </View>";

ListItemCollection items = targetList.GetItems(query);
                clientContext.Load(items);
                clientContext.ExecuteQuery();

这时候SharePoint 就会以today的时间去作查询,因为没有时区信息,所以当client和SharePoint server不在同一时区设置时,查询结果就会错误,因为SharePoint不知道client object model传过来的时间是什么时区的,它只会根据字面的值在当前时区下查询。

解决方法如下,在Caml中加入一个"StorageTZ"的属性,然后给一个UTC时间,这就告诉SharePoint,我要用UTC时间来查询,所得的结果也是正确的。

string today = DateTime.UtcNow.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'", DateTimeFormatInfo.InvariantInfo); 

//DateTime today = DateTime.Now;
                CamlQuery query = new CamlQuery();
                query.DatesInUtc = true;
                query.ViewXml = @"<View>
                                <Query>
                                  <Where>
                                    <Eq>
                                      <FieldRef Name='Created'/>
                                      <Value StorageTZ='TRUE' Type='DateTime'>" + today + @"</Value>
                                    </Eq>
                                  </Where>
                                </Query>
                              </View>";

ListItemCollection items = targetList.GetItems(query);
                clientContext.Load(items);
                clientContext.ExecuteQuery();

转载于:https://www.cnblogs.com/tonnie/archive/2011/11/01/com.html

[SharePoint 2010] Client Object Model 跨时区查询list item的方法相关推荐

  1. 总结:Sharepoint2010 Client Object Model -- ECMAScript Client

    ECMAScript Client : 1. 在 SP.js 里有许多现成的方法操纵 Sharepoint对象, 路径:C:\Program Files\Common Files\Microsoft ...

  2. 如何开启匿名访问SharePoint 2010里的Client Object Model

    正如大家所知道的,SharePoint 2010 集成了一个新的特性"客户端对象模型( Client Object Model)",这真的是个很有趣的东西,开发人员可以很方便的写一 ...

  3. Sharepoint学习笔记 –架构系列—Sharepoint的客户端对象模型(Client Object Model)

    前面过了一下Sharepoint的服务器端对象模型,接下来就让我们大致看看Sharepoint的客户端对象模型(Client Object Model: Client OM). 首先需要了解的就是Sh ...

  4. Sharepoint学习笔记 –架构系列—12 Sharepoint的客户端对象模型(Client Object Model)

    前面过了一下Sharepoint的服务器端对象模型,接下来就让我们大致看看Sharepoint的客户端对象模型(Client Object Model: Client OM). 首先需要了解的就是Sh ...

  5. 总结:Sharepoint2010 Client Object Model -- Silverlight Client

    Silverlight Client: 1. 添加引用, Add Reference: Microsoft.SharePoint.Client.Silverlight.dll: Microsoft.S ...

  6. MOSS 2010:Visual Studio 2010开发体验(19)——ECMAScript Object Model

    这篇文章部分材料摘自下面这个地址,我做了翻译,并且按照我的案例场景做了补充 http://www.codeproject.com/Articles/60348/SharePoint-2010-Clie ...

  7. sharepoint 2010 培训公司课程内容

    sharepoint 2010 培训公司课程内容:用之学习参考,引导. 1>sharepoint 2010开发概述; 2>VS2010 开发SHAREPOINT 2010; 3>sh ...

  8. SharePoint 2010 沙盒开发

    前言 本文期图阐述在SP2010里面Sandboxed的原理极其相关使用.写这篇文章的时候正好遇到一个用户的case,这个case需要在某个列表里输入数据点击保存后数据能按照一定的格式插到Calend ...

  9. SharePoint 2010开发实例精选——通过客户端对象模型删除页面上的Web部件

    下面的例子是在控制台应用程序中使用客户端对象模型,为了在控制台程序中使用ClientContext,我们需要添加两个dll引用到我们的项目中.Microsoft.SharePoint.Client.d ...

最新文章

  1. 基于知识图谱的行业问答系统搭建分几步?
  2. 一个野路子java程序员的自述
  3. 【ruoyi若依】为当前页添加显示事件
  4. 使用SDL打造游戏世界之入门篇 - 4
  5. 【C语言进阶深度学习记录】十八 条件编译的使用与分析
  6. 【Clickhouse】Clickhouse 运算符 操作符 算术,比较,取整,逻辑,哈希,条件 字符串函数
  7. 计算机学院学生会宣传稿,计算机与信息工程学院学生会
  8. 基本的阿里云Linux服务器设置
  9. XLSTransformer生成excel文件案例
  10. Unity实现鼠标点击指定位置导航角色
  11. MATLAB常用正则表达式记录
  12. ERP系统实施之入门
  13. 基于Ruby 安装 sass 安装出现的错误以及解决
  14. java徽章_java
  15. 计算机键盘规律,计算机盲打键盘指法图顺口溜
  16. 电子签章,一章通用还有多远?
  17. Python + Django4 搭建个人博客(十):实现文章详情页面
  18. 【Windows】关闭Windows Update自动更新
  19. MATLAB小技巧(20)矩阵分析--主成分回归
  20. ios Mac下的SVN工具:Cornerstone与Versions和使用subversion管理iOS源代码

热门文章

  1. 操作表格_Excel表格基础操作-新手入门级
  2. eclipse wsdl2java_使用Eclipse的wsdl2java工具
  3. c语言折半查找输出坐标,数据结构(C语言版)——有序表查找(折半查找)(代码版)...
  4. matlab rootdir,Python cfg.ROOT_DIR属性代码示例
  5. linux无桌面重做系统,Linux不需要重做系统
  6. 如何在博客内添加音乐
  7. 数据结构【插入操作具体代码的实现】
  8. 李牛(Linux)vi
  9. IAP-应用内购买流程
  10. Projection投影