CRM OData DateTime Проблема с часовым поясом

1

Я столкнулся с проблемой, когда CRM, похоже, не корректно обрабатывает DateTime с помощью OData. В частности, мы пытаемся создать пользовательскую запись с именем new_vod с начальным и конечным временем (и несколькими другими атрибутами, которые я удалил здесь для простоты), используя вызов JavaScript в CrmRestKit. Когда пользователь, выполняющий эту функцию, находится не в том же часовом поясе, что и сервер, время неверно независимо от того, что происходит между сервером и пользователем.

Например, если мой пользователь CRM находится в режиме Mountain Time, а сервер находится в восточном времени, время начала будет через 2 часа (хотя оно и должно быть сейчас) при просмотре вновь созданной записи в CRM. Пользовательский часовой пояс не влияет на результат. (Я сравниваю "new_starttime" со временем "Создано", чтобы подтвердить, что я не просто неправильно просматриваю данные, а созданное вовремя - за 2 часа до начала времени в этом сценарии).

Вот соответствующий фрагмент:

var startTime = new Date();

//Add 90 minutes to the current date/time
var endTime = new Date();
endTime.setMinutes(startTime.getMinutes() + 90);

//Create a cvt_VOD record
var newVOD = {
    'new_starttime': startTime,
    'new_endtime': endTime
};

var createdVOD = CrmRestKit.Create('new_vod', newVOD)
...

Я заметил, что когда я отлаживаю создание записи new_vod в плагине предварительного этапа, "преобразование" в UTC уже произошло неправильно, поэтому это заставляет меня думать, что сам вызов Rest не прав.

Может ли кто-нибудь пролить свет на то, почему это происходит?

FYI, Мы находимся на CRM 2015 по существу.

Теги:
dynamics-crm-2015

1 ответ

0

Попробуйте это решение Somesh:

https://community.dynamics.com/crm/b/dynamicscrmbestpractices/archive/2014/12/04/crm-timezone-issue-using-javascript

  • 0
    Спасибо за ответ. Я видел эту страницу, когда я первоначально изучал проблему. Это неполно, на мой взгляд. Функция, которая, кажется, выполняет основную часть работы, принимает входной параметр с именем «currentAccount», и значение DateTime этого параметра, по-видимому, уже преобразовано. Я хочу посмотреть, как это преобразование сделано. Другим недостатком является то, что это решение просит пользователя выбрать DateTime без какого-либо часового пояса, в отличие от программного получения времени прямо сейчас.
  • 0
    Пожалуйста, попробуйте это. jsfiddle.net/t7v660ea/2
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню