You need to enable JavaScript to run this app. 在Dynamics CRM中如何通过API协调用户本地输入日期与UTC存储日期
优惠活动
大模型
产品
解决方案
定价
更多

在Dynamics CRM中如何通过API协调用户本地输入日期与UTC存储日期

Dynamics CRM 日期字段读取原始录入值解决方案

无需客户配合的临时方案(仅读权限即可实现)

  • 直接读取Entity对象的FormattedValues属性:通过OrganizationService查询返回的实体对象自带FormattedValues集合,该集合存储的是对应字段在CRM UI上的显示值,默认和当前API调用用户的区域、时区设置匹配。你只需要将调用CRM接口的服务账号时区调整为客户CRM实例的组织默认时区,即可拿到和用户录入时完全一致的原始日期字面量。
    示例代码(C#):
    // 按需查询商机实体的自定义日期字段
    ColumnSet columnSet = new ColumnSet("custom_projectstartdate", "custom_projectenddate");
    Entity opportunity = orgService.Retrieve("opportunity", 商机记录GUID, columnSet);
    
    // 读取格式化后的原始日期字符串
    if (opportunity.FormattedValues.ContainsKey("custom_projectstartdate"))
    {
        string projectStartDateInput = opportunity.FormattedValues["custom_projectstartdate"];
    }
    if (opportunity.FormattedValues.ContainsKey("custom_projectenddate"))
    {
        string projectEndDateInput = opportunity.FormattedValues["custom_projectenddate"];
    }
    
    注意:该方案返回的是字符串格式的日期,如果你需要做日期计算、排序等操作,需要自行解析为DateTime类型。
  • 如果你使用FetchXML进行批量查询,可以在请求头中指定返回格式化值,也能拿到相同的结果,无需额外做时区转换逻辑。

需要客户配合的永久解决方案(适配全场景)

如果你的业务逻辑需要直接使用DateTime类型的原始日期,避免字符串解析的兼容问题,可以让客户调整两个自定义日期字段的配置,操作步骤可以直接提供给客户管理员:

  1. 进入Dynamics CRM后台,依次打开高级设置 > 自定义 > 自定义系统,找到商机(opportunity)实体的字段列表
  2. 分别编辑custom_projectstartdate和custom_projectenddate两个字段的属性
  3. 将字段的行为选项从默认的「用户当地时间」修改为「日期仅(无时区转换)」
  4. 保存修改并发布实体自定义项即可

配置调整后,用户在UI选择日期时CRM不会做任何时区转换,直接存储用户输入的字面日期,你通过OrganizationService直接读取字段的DateTime属性就是原始录入值,不需要做额外处理。

内容的提问来源于stack exchange,提问作者Stephan G

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 08:00:05