Что 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".