2017-06-05 114 views
1

我遇到了CRM似乎无法正确使用OData处理DateTime的问题。具体而言,我们正在尝试使用JavaScript调用CrmRestKit来创建一个名为new_vod的自定义记录,其中包含开始和结束时间(以及其他一些我为了简化而从中移除的属性)。当执行此功能的用户与服务器不在同一时区时,无论服务器与用户之间的偏移是什么,时间都是不正确的。CRM OData日期时间时区问题

例如,如果我的CRM用户处于Mountain Time并且服务器处于东部时间,那么在查看CRM中新创建的记录时,开始时间将从现在起2小时(即使应该是现在)。用户计算机的时区似乎对结果没有任何影响。 (我将“new_starttime”与“Created On”时间进行比较,以确认我不只是查看错误的数据,并且创建时间是在此场景中的开始时间前2小时)。

下面是相关片段:

var startTime = new Date(); 

//Add 90 minutes to the current date/time 
var endTime = new Date(); 
endTime.setMinutes(startTime.getMinutes() + 90); 

//Create a cvt_VOD record 
var newVOD = { 
    'new_starttime': startTime, 
    'new_endtime': endTime 
}; 

var createdVOD = CrmRestKit.Create('new_vod', newVOD) 
... 

我注意到,当我调试的前期插件创建new_vod记录中,“转换”为UTC已经发生了错误,那么它会导致我相信休息电话本身并不正确。

任何人都可以阐明为什么会发生这种情况?

仅供参考,我们在CRM 2015内部部署。

回答

0
+0

感谢响应。当我最初研究这个问题时,我看到了这个页面。我认为这是不完整的。似乎在做核心工作的函数接受一个称为“currentAccount”的输入参数,并且该参数的DateTime值似乎已经被转换。我想看看如何完成转换。另一个缺点是这个解决方案要求用户选择一个没有任何时区的DateTime,而不是通过编程来获取时间。 –

+0

请试试这个。 http://jsfiddle.net/t7v660ea/2/ –

+0

我有点不清楚这里的建议是什么。有3个提醒,所以我尝试将这些提示中的值替换为startDate和EndDate。我的结果是:第一个是我一直在尝试的,所以这也是一样的结果,第二个提醒最后得到了同样的结果,而第三个提醒的结果是一段时间被关闭了几个小时。 –