• 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

  • 相关阅读:
    H-ui前端框架
    表单验证
    Switch 语句
    mysql下优化表和修复表命令使用说明(REPAIR TABLE和OPTIMIZE TABLE)
    mysql之repair table 修复表札记
    社会化海量数据采集爬虫框架搭建
    微信开发学习路线
    搜索引擎的商业价值
    centos7图形配置 firewall-config
    恢复gvim的ctl+v可视模式设置
  • 原文地址:https://www.cnblogs.com/towerking/p/2406464.html
Copyright © 2020-2023  润新知