Тип «Длительность»

Кроме конкретных значений даты и времени, прикладное значение имеют разности таких значений. Например, интересно узнать, сколько времени прошло между созданием файла и его последней модификацией, сколько продолжалась встреча и т. д. Также возникают ситуации, когда надо к указанному моменту времени прибавить какой-то интервал времени. Например, когда закончится событие, которое начинается в указанный момент времени (дата и время) и длится 4 часа 15 минут.

Для работы с интервалами времени предназначен тип Длительность. Этот тип хранит количество миллисекунд, описывающих некоторый интервал времени. Этот интервал может быть задан при создании значения типа Длительность или получен путем вычисления разницы между различными экземплярами работы с датой и временем.

Минимальное и максимальное значения, соответственно: -999999999999999мс и 999999999999999мс.

Значение типа Длительность можно получить следующим способом:
  • С помощью конструктора типа, в котором составляющие интервала вводятся отдельными параметрами конструктора. Обязательность указания параметров конструктора зависит от используемого конструктора.
  • С помощью литерала, описывающего длительность. Литерал имеет вид [+|-][<А>д][<Б>ч][<В>м][<Г>с][<Д>мс]. В этом литерале любой элемент может быть опущен, если соответствующее значение равно нулю. Компоненты означают следующее:
    • <А> — значение дней.
    • <Б> — значение часов.
    • <В> — значение минут.
    • <Г> — значение секунд.
    • <Д> — значение миллисекунд.
  • В результате вычитания значений работы с датой и временем.

Для значений типа Длительность поддерживаются стандартные арифметические операции. Значение типа Длительность может участвовать в качестве одного из операндов в операциях сложения и вычитания для значений типа Дата, Время, Момент, ДатаВремя. Значение типа Длительность получается в результате вычитания значений типа Дата, Время, Момент, ДатаВремя.

метод Скрипт()
    пер ДатаНачала = новый Дата(2020, 3, 1)
    пер ДатаОкончания = Дата{2020-03-10}
    пер ВремяНачала = новый Время(9, 15, 0)
    пер ВремяОкончания = Время{18:0:0}
    пер МоментВремени1 = новый Момент("2020-01-01 0:0:0 Z")
    пер МоментВремени2 = новый Момент("2020-12-31 12:59:59 Z")
    пер ПолтораЧаса = новый Длительность(1, 30, 0)
    пер ДваДня = 2д
    пер РезультатОперации: неизвестно
    РезультатОперации = ДатаНачала + ДваДня
    РезультатОперации = ДатаНачала + 5д
    РезультатОперации = ДатаОкончания - ДатаНачала
    РезультатОперации = МоментВремени2 - 5д14ч30м
;