Dynamics crm 2011 QueryScheduleRequest在Microsoft CRM 2011中不起作用

Dynamics crm 2011 QueryScheduleRequest在Microsoft CRM 2011中不起作用,dynamics-crm-2011,dynamics-crm,Dynamics Crm 2011,Dynamics Crm,我主要想使用QueryScheduleRequest检查特定用户在提供的时间范围内是否空闲。为此,我使用以下代码检索用户在今天日期的可用时间: QueryScheduleRequest scheduleRequest = new QueryScheduleRequest { ResourceId = userResponse.UserId, Start = DateTime.Today,

我主要想使用QueryScheduleRequest检查特定用户在提供的时间范围内是否空闲。为此,我使用以下代码检索用户在今天日期的可用时间:

QueryScheduleRequest scheduleRequest = new QueryScheduleRequest
            {
                ResourceId = userResponse.UserId,
                Start = DateTime.Today,
                End = DateTime.Today,
                TimeCodes = new TimeCode[] { TimeCode.Available}
            };
QueryScheduleResponse scheduleResponse =    (QueryScheduleResponse)serviceProxy.Execute(scheduleRequest);
但是,我在scheduleResponse中没有得到CRM服务日历中看到的正确响应。响应中的开始和结束日期也在更改。例如,假设我在scheduleRequest中输入开始日期和结束日期为12,但在scheduleResponse中,它们分别更改为12和13。我已经检查过我指的是正确的用户

这就是CRM中用户的日程安排(工作时间:上午10点到晚上7点):

scheduleResponse中的结果如下所示:


注意更改日期和时间表。是否有其他方法可以实现此功能?

基本上,Dynamics CRM将数据库中的所有日期存储为UTC时间。CRM用户必须转换为用户本地时间

在获得scheduleResponse之后。您可以使用以下代码获取用户开始时间结束时间

QueryScheduleResponse scheduleResponse = (QueryScheduleResponse)service.Execute(scheduleRequest);
                                    foreach (var getTimings in scheduleResponse.TimeInfos)
                                   {
                                       DateTime startTime =Convert.ToDateTime(getTimings.Start.Value.ToLocalTime());
                                       DateTime endTime = Convert.ToDateTime(getTimings.Start.Value.ToLocalTime());
                                   }

注意:我们还有ExpandCalendarRequest类来检索用户可用的时间安排

我认为您遇到的问题是因为您的客户机和crm服务器(无论在哪里)之间的时区差异。也许是开始的地方。