|
24.08.2020, 11:01 | #1 |
Участник
|
DateTimeUtil::getOriginatingTimeZone неправильно определяет часовой пояс
MS DAx 2009, KernelVersion: 5.0.1500.6491
MS SQL Server 2008 R2 Всем привет. Метод ядра DateTimeUtil::getOriginatingTimeZone неправильно определяет значение энума TimeZone для российских часовых поясов. Если из поля типа DateTime таблицы взять значение, в котором хранится значение по гринвичу и для которого в системном поле SQL хранится значение одной из российских тайм-зон, то метод всегда возвращает значение RTZ1 (Калиниград). Для нероссийских тайм-зон все определяется корректно. Та же проблема, если в коде сформировать значение типа DateTime и указать для него одну из российских тайм-зон (RTZ2 - RTZ11). При отображении значений на форме и сохранении значений DateTime в БД все корректно: в поле DateTime сохраняется значение по гринвичу, в поле тайм-зоны DateTimeZid записывается правильное значение, соответствующее тайм-зоне, настроенной для текущего пользователя (то есть сопоставление значений по таблицам TimeZoneList и TimeZonesRulesData отрабатывает корректно). |
|
24.08.2020, 12:14 | #2 |
Участник
|
Интересно. А у вас точно корректно часовые пояса прописаны в аксапте ? После изменение в законодательстве выходило обновление, которое меняло настройки.
Y2K11 или переход на зимнее время |
|
24.08.2020, 17:23 | #3 |
Участник
|
Как мне сказали, патч по обновлению запускали. Судя по таблицам TimeZonesRulesData и TimeZonesList, данные по новым тайм-зонам и энум TimeZone с новыми значениями есть, единственное для тайм-зон РФ похоже меток нет. При сохранении значений типа dateTime в SQL в поле datetimeZId сохраняются правильные значения из TimeZonesRulesData.RuleId: 86001 - 86011, соответствующие настроенной у пользователя тайм-зоне, то есть получается, что значение энума определяется правильно: TimeZonesList.enumPosition: 86 - 96.
А вот в обратную сторону метод DateTimeUtil::getOriginatingTimeZone(Таблица.Поле_ типа_DateTime) для любого значения с российской тайм-зоной (86001 - 86011) всегда определяется значение энума 86 (что соответствует первой обновленной российской тайм-зоне Калиниград). Зарубежные обновленные тайм-зоны определяются корректно. В теме Y2K11 или переход на зимнее время говорилось, что можно что-то руками поправить в файле *.ktd, но что править в файле не нашел. Последний раз редактировалось matew; 24.08.2020 в 17:30. |
|
|
|