首页 > 技术文章 > 【解决】SharePoint外部列表保存的日期/时间值不正确

jancco 2013-08-27 19:33 原文

【问题描述】:

在SharePoint中创建一个外部列表后,通过工作流或直接通过外部列表中的新增向外部列表添加数据项。通过外部列表或数据库查看添加的数据项时发现日期类型字段的值都不正确,像是差了若干个时区。

出现此问题的原因是BCS会将日期字段都转换为GMT时间,然后保存。(但存数据库中读取此日期字段时却被认为是本地化的日期。)

【解决办法】:

1. 在SPD中打开网站
2. 选择“外部内容类型”(ETC)
3. 找到要修改的ECT,并选择
4. 在工具栏点击“导出BDC模型”,保存模型文件
5. 用文本编辑工具打开bdcm(扩展名)文件(如果要用记事本打开,请先将扩展名改为xml)
6. 找到要修改的DateTime字段的<TypeDescriptor>元素
7. 将如下节点中的“LobDateTimeMode”属性的值修改为“Local”(原值为“UTC”)

<TypeDescriptor Name="Birthdate" TypeName="System.DateTime" IsCollection="false">
    <Interpretation>
        <NormalizeDateTime LobDateTimeMode="Local" />
    </Interpretation>
</TypeDescriptor>

注意:每一个字段都有4处<TypeDescriptor>的定义,所以需要将4处都做修改。
8. 保存此模型文件
9. 在SPD中删除此ECT
10. 进入SharePoint“管理中心”
11. 点击“管理服务应用程序”
12. 点击进入“Business Data Connectity Service”
13. 导入修改后的模型文件

参见:
http://go4answers.webhost4life.com/Example/bcs-showing-wrong-dates-88780.aspx

推荐阅读