Что DateTime возвращается из API Dynamics CRM

Всегда ли объекты DateTime, возвращаемые веб-API Dynamics CRM, находятся в UTC и где это задокументировано?

Я использую пакет nuget CRM SDK. Я читал в нескольких блогах (в магазинах CRM), что API CRM всегда возвращает объекты UTC DateTime, и я обнаружил, что DateTime.Kind всегда UTC (из моего тестирования), но мне нужно знать наверняка.

CRM - это 2015 год, если это имеет значение.

Я звоню в веб-сервисы Dynamics CRM со следующим кодом.

 var querybyattribute = new QueryByAttribute()
 {
     EntityName = Opportunity.EntityLogicalName,
     ColumnSet = new ColumnSet(true)//all columns
 };

querybyattribute.Attributes.AddRange(attributeName);
querybyattribute.Values.AddRange(attributeValue);

И затем вызывая RetreiveMultiple

EntityCollection entities;
using (var proxy = new ManagedTokenOrganizationServiceProxy(serviceManagement, credentials))
{
    entities = proxy.RetrieveMultiple(query);
}

2 ответа

Решение

Существует три разных типа поведения для дат в CRM. Только двое из них действительно имеют понятие часового пояса. Поведение этих трех типов можно найти в MSDN, с соответствующими частями, скопированными здесь:

UserLocal (это единственный доступный в CRM 2015 до обновления 1)

Операция получения возвращает значение UTC.

DateOnly

Для операций извлечения и обновления преобразование часового пояса не выполняется, а значение времени всегда равно 12:00 (00:00:00).

TimeZoneIndependent

Для операций извлечения и обновления преобразование часового пояса не выполняется, а фактические значения даты и времени возвращаются и обновляются соответственно в системе независимо от часового пояса пользователя.

"В Web-сервисах (SDK) эти значения возвращаются с использованием общего формата часового пояса UTC".

https://technet.microsoft.com/en-us/library/dn946904.aspx

Другие вопросы по тегам