Преобразование часового пояса сервера

Если страница строится на Сервисе представления, время из часового пояса сервера необходимо преобразовать в часовой пояс клиента.

Смещение часового пояса клиента хранится в cookie с именем tz. Для получения смещения используется метод getClientTimeZoneOffset.

Смещение часового пояса равняется разнице между универсальным (UTC) и местным временем клиента в минутах. Смещение будет положительным, если время клиента отстаёт от UTC, и отрицательным, если оно опережает UTC. Например, если ваш часовой пояс - UTC+10, то метод вернёт -600.

import {date as format} from 'Types/formatter';
import {DateTime} from 'Types/entity';
const date = new Date();
console.log(format(date, format.SHORT_TIME, DateTime.getClientTimezoneOffset()));

Пример актуален только для вызова на Сервисе представления.

Особенности работы с часовыми поясами в БЛ СБИС

Бизнес-логика всегда работает со временем по зоне, в которой расположен сервер БЛ. В нашем случае это всегда МСК. Подробнее можно прочитать здесь.

Использование с контролами

Смещение часового пояса, в котором необходимо вывести значение, передается в опцию timeZoneOffset декоратора даты.

import {Control, IControlOptions, TemplateFunction} from 'UI/Base';
import {date} from 'Types/formatter';
import {DateTime} from 'Types/entity';
class DateDecorator extends Control<IControlOptions> {
    protected _value = new Date('December 17, 2021 10:00:00');
    protected _format = date.FULL_DATETIME;
    protected _offset = DateTime.getClientTimezoneOffset();
    protected _template: TemplateFunction = controlTemplate;
}
export default DateDecorator;
<Controls.decorator:Date 
    value="{{_value}}" 
    format="{{_format}}" 
    timeZoneOffset="{{_offset}}"/>