2017-05-17 28 views
0

我写了一个C#插件,它从Dynamics CRM中读取数据,但我遇到了日期问题。很多时候,当我在插件中处理它时,来自CRM的日期相差一天。例如。 1/7/2017将成为1/8/2017。它必须与我想的时区有关,尽管CRM与我工作的时区相同。是否有任何方法可以从CRM中获取日期,并将该日期用作已读,而不是根据时间进行调整时区或什么?我试图用UTC日期格式瞎扯,但有些东西不起作用。C#插件中的日期在Dynamics CRM中相差一天

回答

0

这完全是一个时区问题。最新的CRM版本为datetime字段提供了TimeZone Independent选项来为这类问题提供解决方法(您可以在自定义中更改字段选项;请记住这是一个设置后无法恢复的选项)。

1

您应该阅读这个article。突出显示最重要的部分:

  • CRM DateTime始终附带时间分量。有一个在 创建只定义日期日期时间字段的设置,但这一切确实 是默认时间为午夜本地

  • 日期时间为UTC时间保存在数据库中的时间

  • 日期时间在CRM UI总是根据用户的当地时区显示。 即使UI仅显示日期组件,也是如此。此 导致以下影响:如果CST中的用户输入联系人的出生日期 截止日期为2/2/1980,则这将在数据库中保存为2/2/1980 05:00如果PST 中的用户查看联系人记录,他/她看到生日为1980年2月1日 (因为本地时间,用户将1980年2月1日22:00)

  • 日期时间通过CRM Web服务检索到的始终是UTC时间

  • 日期时间设定通过CRM Web Services是用户的本地时区 默认

  • 注意th在格外小心,一定要注意了解有无通话 与主叫用户或服务的用户

  • 日期时间通过CRM Web服务设置完成可以被定义为UTC 代替

  • 日期时间直接从查询SQL表或基本视图返回UTC

  • 日期时间从过滤视图查询返回用户本地时间

因此,当您检索UTC获取日期时,基本上就是这种差异的原因。要比较日期,您应该使用UTC或只需拨打ToLocalTime()将UTC转换为当地时间。

相关问题