2014-01-15 66 views
1

工作,我基本上要检查是否有特定的用户是免费使用QueryScheduleRequest提供的时间范围。为此,我现在用的是下面这段代码来获取今天的日期,用户可用的时序:QueryScheduleRequest不是在Microsoft CRM 2011

QueryScheduleRequest scheduleRequest = new QueryScheduleRequest 
      { 
       ResourceId = userResponse.UserId, 
       Start = DateTime.Today, 
       End = DateTime.Today, 
       TimeCodes = new TimeCode[] { TimeCode.Available} 
      }; 
QueryScheduleResponse scheduleResponse = (QueryScheduleResponse)serviceProxy.Execute(scheduleRequest); 

不过,我还不如在CRM服务日历看到越来越在scheduleResponse适当的响应。响应中的开始日期和结束日期也发生了变化。例如,假设我在scheduleRequest中输入开始日期和结束日期作为第12个日期,而是在scheduleResponse中分别更改为第12日和第13日。我检查了我指的是正确的用户。

这是用户的日程安排看起来像在CRM(工作时间:上午10时至晚上7时): enter image description here

而这正是导致scheduleResponse的样子:

enter image description here

观察日期和时间表正在发生变化。有没有其他的方法可以实现这个功能?

+0

我想你已经遇到了问题,是因为你的客户端和CRM服务器(无论是)之间的时区差异。 [This](http://mscrmonline.wordpress.com/2010/04/23/time-zone-setting-in-microsoft-crm/)和[this](http://stackoverflow.com/questions/17944111/ datetime-plugin-crm-2011)可能是开始的地方。 – keerz

回答

0

基本动态CRM将数据库中的所有日期存储为UTC时间 .Crm用户必须转换为Users LocalTime。

得到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类检索的用户可用计时