27.12.2018, 18:42 | #1 |
Участник
|
Сохранение в БД значений в формате UTCDateTime
Здравствуйте.
Столкнулся с ситуацией: есть кастомная таблица с полем типа UTCTimestamp. Когда создаю в ней поле (вызываю класс с диалоговым окном), в котором указываю дату и время, затем, никак не обрабатывая введённые значения делаю insert и вижу на форме значение на 4 часа больше (у меня указан в настройках клиента предпочтительный часовой пояс +04:00). В таблице на SQL Server время указано в том виде, как я его ввёл. И если указать в настройках клиента часовой пояс +00:00 время отображается правильно. Я верно понимаю, что это происходит именно из-за того, что я при присвоении значения из диалога полю таблицы, не вычитаю смещение часового пояса? Dynamics Ax 2012 R3. |
|
27.12.2018, 22:25 | #2 |
Участник
|
Да, совершенно верно.
Поля, привязанные к датасорсу, сами это делают. А вот значения, введенные в поле формы, не привязанное к датасорсу имеют значение, включающее смещение UTC текущего пользователя. Соответственно, для сохранения в базу данных это значение нужно очищать от смещения текущего пользователя. |
|
|
За это сообщение автора поблагодарили: S.Kuskov (2), mikki_messer (1). |
28.12.2018, 09:56 | #3 |
Участник
|
Цитата:
Сообщение от Raven Melancholic
Да, совершенно верно.
Поля, привязанные к датасорсу, сами это делают. А вот значения, введенные в поле формы, не привязанное к датасорсу имеют значение, включающее смещение UTC текущего пользователя. Соответственно, для сохранения в базу данных это значение нужно очищать от смещения текущего пользователя. X++: tableName.UtcDateTimeField = DateTimeUtil::removeTimeZoneOffset(dlgDateTime.value(),DateTimeUtil::getUserPreferredTimeZone()); |
|
28.12.2018, 10:13 | #4 |
Участник
|
На свежую голову почитал что сам написал.
Цитата:
имеют значение, включающее смещение UTC текущего пользователя
|
|
29.12.2018, 11:15 | #5 |
Участник
|
Я так и понял.
|
|
04.01.2019, 09:23 | #6 |
Участник
|
Там еще можно в расширенном типе данных, используемом для поля таблицы выставить свойство TimezonePreference
__________________
Я прибыл к вам из Кантемировской дивизии. А там, как известно, дураков не держат! |
|
|
За это сообщение автора поблагодарили: trud (2), mikki_messer (1). |
Теги |
2012 r3, timezone, utctimestamp, как правильно |
|
|