2014-01-15 117 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類檢索的用戶可用計時