datetime插件crm 2011

时间:2013-07-30 10:07:48

标签: datetime attributes dynamics-crm-2011

最近,我尝试从Invoice entity throuhg插件中的自定义字段获取datetime值,并发现它返回CRM表单中显示的日期前一天。对于incstance,我输入了“7/1/2013”​​,在我的C#中,以下代码返回“6/30/2013”​​

EntityReference eRef = new EntityReference(localContext.PluginExecutionContext.PrimaryEntityName, localContext.PluginExecutionContext.PrimaryEntityId);
var invoice = localContext.OrganizationService.Retrieve(eRef.LogicalName, eRef.Id, new ColumnSet(true));
string start = ((DateTime)invoice["revg_startdate"]).ToString(); //here I get 6/30/2013

然后我检查了相关MS SQL表中的实际日期时间,并且它正好在前一天保持,“6/30/2013”​​

日期,时间和时区在服务器,我的电脑和CRM中完全相同。

为什么CRM会保留并显示不同的日期?

1 个答案:

答案 0 :(得分:2)

Dynamics CRM将数据库中的所有日期存储为UTC时间。用户界面根据用户设置中的用户本地时区进行此时间转换。

原因是您可以让不同时区的用户在同一个CRM组织中工作,而CRM必须以通用格式存储日期,以便能够向所有用户显示正确的日期和时间。 / p>

如果您想在插件中使用本地时间,可以使用.ToLocalTime()

string start = ((DateTime)invoice["revg_startdate"]).ToLocalTime().ToString();