当我将它插入CRM中的工作时间时,CalendarRule上的starttime更改

时间:2014-06-24 11:08:55

标签: timezone dynamics-crm-2011 dynamics-crm crm

当我将CalendarRule提交到CRM的工作时间时,StartTime会在提交到数据库之前进行更改。我通过下面的代码提交CalendarRule。提交的StartTime相差-2小时。我怀疑这与我住在+1 GMT时区并且我们的时钟设置为dayligt时间节省这一事实有关。

var calendarFrequenceRule = new CalendarRule
{
    Duration = 24 * 60, //24 hours
     ExtentCode = 1,
    StartTime = start.Date,
    Pattern =
        new CalendarRulePattern
        {
            ByDay = new List<DayOfWeek> {start.DayOfWeek},
            Interval = 1,
            Frequency = CalendarRulePattern.FrequencyEnum.WEEKLY
        }.ToString(),
    Rank = 0,
    TimeZoneCode = userSettings.TimeZoneCode,
    InnerCalendarId = new EntityReference(Calendar.EntityLogicalName, innerCalendarId),
};
calendarRules.Clear();
calendarRules.Add(calendarFrequenceRule);
userCalendarEntity.CalendarRules = calendarRules;
OrganizationService.Update(userCalendarEntity);

var calendarTimeRule = new CalendarRule
{
    //Name = name,
    //Description = name,

    Duration = (int)(end - start).TotalMinutes,
    Effort = 1.0,
    IsSimple = true,
    Offset = (int)(start - start.Date).TotalMinutes,
    Rank = 0,
    TimeCode = (int)TimeCode.Available,
    SubCode = (int)SubCode.Schedulable,
    TimeZoneCode = -1,
    CalendarId = new EntityReference(Calendar.EntityLogicalName, innerCalendarId),
};
calendarRules.Add(calendarTimeRule);
newInnerCalendar.CalendarRules = new List<CalendarRule> {calendarTimeRule};
OrganizationService.Update(newInnerCalendar);

当我通过下面的代码再次检索时间时,时间关闭了4个小时。我已经检查过所有用户的时区设置都设置为相同的时区 - 但无济于事。当我查看数据库时,我可以看到通过代码提交的时区与我通过GUI插入的日历规则相同。

检索CalendarRule的代码:

var user = OrganizationService.Retrieve<SystemUser>(userId);

var expandCalendarRequest = new ExpandCalendarRequest
{
    CalendarId = user.CalendarId.Id,
    Start = start,
    End = end,
};

var response = OrganizationService.Execute<ExpandCalendarResponse>(expandCalendarRequest);
return response.result;

1 个答案:

答案 0 :(得分:1)

无论何时使用SDK或Odata端点将DateTime插入CRM,它都会假定它是UTC。如果您通过javascript更新字段,它将假定它是当前用户的时间。我不确定您目前正在使用哪种情况,但除非您正在编辑实际表单中的字段,否则始终使用UTC。

请参阅此答案:https://stackoverflow.com/a/22787954/227436,了解在CRM中使用Time的概述。

这个答案有一个在你的情况下可能有用的功能: https://stackoverflow.com/a/11367508/227436