zoukankan      html  css  js  c++  java
  • SharePoint 2010 客户端模型获取本地日期

          最近在一个项目里,用客户端模型获取日期类型的字段,发现获取的结果总是和实际值的时间不对,初看起来是提前一天,但是经过仔细的分析,发现时间只是提前了8个小时。

    这个很容易想到的就是时区问题,经过检查发现管理中心和站点的时区都设置为北京时间的,即是我们国人常用的时区,但是为什么还是相差8个小时呢? 首先得说明的是用服务器

    直接获取日期类型的时间并不会出现这种情况。

          现在就来解释一下为什么客户端模型获取日期类型的数据会是这样?

    原因是SharePoint 2010数据库存储时间的时候都是用UTC时间进行存储,而在SharePoint的站点中显示时间是根据各位设置的时区内型来显示的,假设我们的时区是北京的,那么SharePoint

    2010设置的显示时间就是北京时区的时间,而客户端获取日期格式的实质上是UTC时间,而不是本地时区时间,从而导致了看见的错误。

          下面一段代码可以解决这个问题:

    // 获取列表日期内型的字段值
    DateTime UTCDateTime = (DateTime)item[dateTime.InternalName];

    // 日期格式进行转换
    SP.ClientResult<string> result = Utility.FormatDateTime(clientContext, clientContext.Web, UTCDateTime, DateTimeFormat.DateTime);

    SP.Web web = clientContext.Web;
    clientContext.Load(web);
    clientContext.ExecuteQuery();

    // 得到本地时间日期
    DateTime rightTime = Convert.ToDateTime(result.Value, new CultureInfo((int)web.Language));

           这样就解决了我们的问题。

    You also can see the guy's blog: http://www.dev4side.com/community/blog/2011/1/5/incorrect-dates-taken-from-sharepoint-2010-client-object-model.aspx

  • 相关阅读:
    转《编程之美——微软技术面试心得》勘误表
    第一次 学习使用 智能指针
    test _todel
    (转 todo阅读)Android 官方博客 Android应用程序的内存分析(翻译)
    msdn snmp trap 研究可否 重入 转《Multiple Trap Registrations》
    wpbars在博客园开博客了
    创业失败的10个教训总结
    winform 的一种登录方法。
    快速建立Subversion
    (转)SQL Server 按某一字段分组取最大(小)值所在行的数据
  • 原文地址:https://www.cnblogs.com/towerking/p/2406464.html
Copyright © 2011-2022 走看看