Из 12:00 UTC получаем 15:30 в постоянном поясе GMT+3:30. Разбираем единицы результата: секунды, а не часы и не миллисекунды.
Где и как запускать
Полный серверный общий модуль учебной копии. Только чтение настроек и вычисления в памяти.
Подготовка
Работайте в отдельной учебной копии базы. Создайте серверный общий модуль УчебныеЗадачи, вставьте полный модуль урока и вызовите ВыполнитьПример() из серверного обработчика учебной команды.
Код выполняется на сервере: часть функций локализации и часовых поясов недоступна непосредственно в тонком клиенте. Реквизиты пользователя, региональные настройки и часовые пояса код не меняет.
Для двух уроков о метаданных используйте копию КА2 Progress: в исходном Languages/Русский.xml действительно есть язык Русский с КодЯзыка = ru. Остальные уроки не требуют объектов конкретной конфигурации.
Процедура ВыполнитьПример() Экспорт
МоментUTC = Дата(2026, 1, 15, 12, 0, 0);
Пояс = "GMT+3:30";
Стандартное = СмещениеСтандартногоВремени(Пояс, МоментUTC);
Летнее = СмещениеЛетнегоВремени(Пояс, МоментUTC);
Местное = МестноеВремя(МоментUTC, Пояс);
Сообщить(Стандартное = 12600);
Сообщить(Летнее = 0);
Сообщить(Местное = Дата(2026, 1, 15, 15, 30, 0));
Сообщить(Местное - МоментUTC = Стандартное + Летнее);
Сообщить(УниверсальноеВремя(Местное, Пояс) = МоментUTC);
Сообщить("Суммарное смещение в часах: " + Строка((Стандартное + Летнее) / 3600));
КонецПроцедурыРазбор по шагам
Первый аргумент двух функций смещения — пояс, второй — именно универсальный момент. Передаём фиксированную дату, чтобы урок не зависел от сегодняшнего дня.
СмещениеСтандартногоВремени учитывает базовое смещение относительно UTC. СмещениеЛетнегоВремени — добавка относительно стандартного времени; их результаты выражены в секундах.
В постоянном GMT+3:30 нет сезонного перехода: стандартное смещение равно 3,5 × 3600 = 12600, летнее равно 0.
Реальное преобразование делает МестноеВремя. Обратное УниверсальноеВремя проверяет исходный момент; собственная арифметика используется только как контроль.
У именованных поясов правила могут зависеть от даты. Для даты на сезонном переходе обратное преобразование местного времени требует отдельного анализа неоднозначности.
Как проверить результат
Пять контрольных Истина; последняя строка показывает 3,5 часа в текущем формате числа.
Меняйте учебный постоянный пояс и ожидаемые даты согласованно; не сохраняйте исходное ожидание 12600 для другого пояса.
Ожидаемый результат
Время заказа переведено без изменения настроек базы и без ошибки в единицах смещения.
На что обратить внимание
Не передавайте местное время во второй аргумент функций, которые требуют UTC.
Не вычитайте летнее смещение из стандартного: для получения полного смещения нужна сумма.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.