Перевести время учебного заказа с учётом двух видов смещения

Учебные задачи

Из 12:00 UTC получаем 15:30 в постоянном поясе GMT+3:30. Разбираем единицы результата: секунды, а не часы и не миллисекунды.

Где и как запускать

Полный серверный общий модуль учебной копии. Только чтение настроек и вычисления в памяти.

Подготовка

  1. Работайте в отдельной учебной копии базы. Создайте серверный общий модуль УчебныеЗадачи, вставьте полный модуль урока и вызовите ВыполнитьПример() из серверного обработчика учебной команды.

  2. Код выполняется на сервере: часть функций локализации и часовых поясов недоступна непосредственно в тонком клиенте. Реквизиты пользователя, региональные настройки и часовые пояса код не меняет.

  3. Для двух уроков о метаданных используйте копию КА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));
КонецПроцедуры

Разбор по шагам

  1. Первый аргумент двух функций смещения — пояс, второй — именно универсальный момент. Передаём фиксированную дату, чтобы урок не зависел от сегодняшнего дня.

  2. СмещениеСтандартногоВремени учитывает базовое смещение относительно UTC. СмещениеЛетнегоВремени — добавка относительно стандартного времени; их результаты выражены в секундах.

  3. В постоянном GMT+3:30 нет сезонного перехода: стандартное смещение равно 3,5 × 3600 = 12600, летнее равно 0.

  4. Реальное преобразование делает МестноеВремя. Обратное УниверсальноеВремя проверяет исходный момент; собственная арифметика используется только как контроль.

  5. У именованных поясов правила могут зависеть от даты. Для даты на сезонном переходе обратное преобразование местного времени требует отдельного анализа неоднозначности.

Как проверить результат

  1. Пять контрольных Истина; последняя строка показывает 3,5 часа в текущем формате числа.

  2. Меняйте учебный постоянный пояс и ожидаемые даты согласованно; не сохраняйте исходное ожидание 12600 для другого пояса.

Ожидаемый результат

Время заказа переведено без изменения настроек базы и без ошибки в единицах смещения.

На что обратить внимание

  1. Не передавайте местное время во второй аргумент функций, которые требуют UTC.

  2. Не вычитайте летнее смещение из стандартного: для получения полного смещения нужна сумма.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.