Магия дат в CRM 2011, DateTime, UTC

Поначалу я нигде не встретил такой ремарки и не обращал на этот факт внимания, пока время тестирования решения не совпало с ранним утром.

Суть заключается в том, что, выбирая на форме в поле типа Дата и Время, например, 1 мая 2012, Вы рассчитываете, что в БД так и запишется: 1 мая 2012. Но все не так просто.

CRM хранит Дату и Время в UTC, таким образом, выходит, что, если Ваш сервер находится где-то за Уралом, то время в БД будет отличаться уже более чем на 6 часов с тем, что Вы указали. Так, у меня, к примеру, получалось, что если установить дату 1 мая, то в автосгенерированном через плагин договоре ставилось 30 апреля.

В моем случае разница между DateTime, которое я ожидал получить и реальным составила 6 часов, это как раз часовой пояс Екатеринбурга.

Если бы я сразу был внимателен, то MSDN прямым текстом говорит «Specifies the attribute value in UTC format.». Сам CRM так и будет показывать в веб-форме ту дату, что Вы выбрали, но если Вы работаете с датами через плагин, то не забывайте возвращать дату из UTC в ваш часовой пояс.

Если Вы нашли ошибку, пожалуйcта выделите ее и нажмите Shift + E или нажмите здесь чтобы информировать меня. Спасибо.

Один комментарий к “Магия дат в CRM 2011, DateTime, UTC

Добавить комментарий