AXForum  
Вернуться   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Разработка
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.11.2013, 15:47   #1  
Eugene.Ostroukhov is offline
Eugene.Ostroukhov
Участник
 
149 / 11 (1) +
Регистрация: 22.02.2013
crm2011: одна и та же дата в полях базы, разное отображение на форме
Всем привет.

у contact-а в базе поля:
birthdate = '1990-01-03 20:00:00.000',
annivarsary = '2014-01-03 20:00:00.000' (расчитываем поле для рассылок-поздравляшек своей обновлялкой)

на форме выводятся две разные даты ("только дата").
если перевести отображение в "дата и время" - у ДР - 3 янв. 23:00 , у годовщины - 4 янв. 00:00

почему так и как побороть?

изначально считаем 20:00 - "правильной" датой (+4 сейчас к ЮТЦ - пусть будет дефолтом)


адд: timezone - москва (забыл сказать)
2010ый год - время на форме совпадает .
2011ый - уже начинает расходиться.
это из-за отмены перехода на зимнее время? (не помню в каком году было)

Последний раз редактировалось Eugene.Ostroukhov; 27.11.2013 в 16:34.
Старый 27.11.2013, 16:48   #2  
spectr is offline
spectr
Участник
Аватар для spectr
MCBMSS
Лучший по профессии 2014
 
287 / 70 (3) ++++
Регистрация: 19.10.2011
Адрес: Киев
для 1990 и 2014 года применяются разные правила перевода времени.
На правила надо смотреть в таблицах TimeZoneRule и TimeZoneDefinition.
После чего думаю станет понятно.
И еще если нет правила для какого-то года то применяется правило для 1900 года
Старый 27.11.2013, 17:09   #3  
Eugene.Ostroukhov is offline
Eugene.Ostroukhov
Участник
 
149 / 11 (1) +
Регистрация: 22.02.2013
теоретически, я догадываюсь почему так.
в 1990м году в марте было зимнее время и это +3 от UTC.
Сейчас - всегда +4 UTC
СРМ пересчитывает время 1990го года - по тогдашним правилам (и получает 23:00)

а в пересчете .NET-ом по "сейчашним правилам" выходит шляпа.
кажется, я где-то такое видел..
Старый 27.11.2013, 19:42   #4  
spectr is offline
spectr
Участник
Аватар для spectr
MCBMSS
Лучший по профессии 2014
 
287 / 70 (3) ++++
Регистрация: 19.10.2011
Адрес: Киев
для .net есть функции преобразование вот пример http://msdn.microsoft.com/en-us/library/hh547406.aspx и описалово http://msdn.microsoft.com/en-us/libr...merequest.aspx
Старый 27.11.2013, 19:57   #5  
Eugene.Ostroukhov is offline
Eugene.Ostroukhov
Участник
 
149 / 11 (1) +
Регистрация: 22.02.2013
Цитата:
Сообщение от spectr Посмотреть сообщение
для .net есть функции преобразование вот пример http://msdn.microsoft.com/en-us/library/hh547406.aspx и описалово http://msdn.microsoft.com/en-us/libr...merequest.aspx
если так работать с миллионными таблицами - можно рехнуться
хотя если это работает коорректно и единственный выход - придется им воспользоваться, конечно
Старый 28.11.2013, 12:05   #6  
Eugene.Ostroukhov is offline
Eugene.Ostroukhov
Участник
 
149 / 11 (1) +
Регистрация: 22.02.2013
да, CRM конвертирует даты иначе, чем обычный DateTime.ToUniversalTIme()
последний почему-то не учитывает разные rules из TimeZoneInfo class.
Старый 28.11.2013, 12:34   #7  
spectr is offline
spectr
Участник
Аватар для spectr
MCBMSS
Лучший по профессии 2014
 
287 / 70 (3) ++++
Регистрация: 19.10.2011
Адрес: Киев
Потому что в СРМ свои часовые пояса и для них правила. Они хранятся в таблицах приведенных выше. И еще один из моментов, то что если в этих таблицах нет нужного правила то они юзают правило для 1900 года.
За это сообщение автора поблагодарили: Eugene.Ostroukhov (1).
Старый 28.11.2013, 12:40   #8  
Eugene.Ostroukhov is offline
Eugene.Ostroukhov
Участник
 
149 / 11 (1) +
Регистрация: 22.02.2013
не, с СРМом как раз все ок.
дотнетный ToUniversalTime работает в текущей разнице с UTC
поэтому, если я в СРМ сохраняю дату в виде UTC (не даю СРМу конвертировать её по СРМным правилам) - то СРМ сохраняет её в чистом виде.
поэтому дата 3 января 1990го года конвертируется в 2 января 1990 20:00 (.net-ом), а СРМ пересчитывает его обратно в московский пояс как +3, т.к. тогда были переводы времени. и выходит, что на форме дата как раз и показывается как 2 января 1990 (23:00, если вывести еще и дату)

Последний раз редактировалось Eugene.Ostroukhov; 28.11.2013 в 12:50.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Доступ из CRM2011 в CRM4.0 Borisvil Dynamics CRM: Разработка 7 28.06.2012 09:58
Отображение поля "Название подразделения" в форме O_Chiner Dynamics CRM: Функционал 6 07.04.2009 11:08
Проблема с icon.aspx - всегда одна и та же иконка ZooY Dynamics CRM: Разработка 1 03.03.2009 09:21
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 00:36.