Перейти к основному содержимому

Форматирование значений даты и времени

Типы ДатаВремя, Время, Дата и Длительность являются потомками типа Форматируемое, а значит, значения этих типов можно представлять в заданном формате. Для форматирования даты и времени используется метод Представление() соответствующих типов, который принимает как аргумент указанный формат и возвращает строку в этом формате.

Метод «Представление()»​

В примере ниже для переменной ДатаСоздания типа ДатаВремя вызывается метод Представление(), который позволяет представить ее значение в виде строки соответствующего формата. Названия месяцев и дней недели устанавливаются в зависимости от локали.

метод ПредставлениеДаты(): неизвестно
пер ДатаСоздания = новый ДатаВремя(2025, 5, 1, 23, 30, 40)
пер ДатаСозданияФормат = ДатаСоздания.Представление("дд ММММ гггг ЧЧ:мм:сс")
возврат ДатаСозданияФормат // 01 мая 2025 23:30:40
;

Если в метод Представление() не передать ни одного аргумента, то будет использоваться значение по умолчанию с учетом текущей локали. Локаль определяет разделители и порядок компонентов даты (день, месяц, год). Например:

  • дд.ММ.гггг чч:мм:сс — для русской локали,

  • дд/ММ/гггг чч:мм:сс — для британского английского,

  • М/д/гггг ч:мм:сс п — для американского английского.

Экранирование​

Для экранирования используется символ ' (одинарная кавычка). Таким образом, символы, которые надо отделить от переменных формата, заключаются в одинарные кавычки. В следующем примере экранирование используется для запятой и пробела (', '), которые разделяют дату и время:

метод Экранирование(): неизвестно
пер ДатаСоздания = новый ДатаВремя(2025, 5, 1, 23, 30, 40)
пер ДатаСозданияФормат = ДатаСоздания.Представление("дд ММММ гггг', 'ЧЧ:мм:сс")
возврат ДатаСозданияФормат // 01 мая 2025, 23:30:40
;

В примере ниже экранирование используется для строк Длительность:, день, часов.

метод Экранирование(): неизвестно
пер ДлительностьСеминара = 1д5ч30м55с333мс
пер ДатаСозданияФормат = ДлительностьСеминара.Представление("'Длительность:' д 'день' Ч 'часов'")
возврат ДатаСозданияФормат // Длительность: 1 день 5 часов
;
примечание

При использовании символа ' (одинарная кавычка) в разделе текста его необходимо экранировать еще одной кавычкой: '' (то есть две идущие подряд одинарные кавычки).

Форматирование длительности​

В примере ниже для переменной ДлительностьСеминара типа Длительность вызывается метод Представление(Формат: Строка), который позволяет представить ее значение в виде строки соответствующего формата. Для указания места, куда необходимо вставить значения единиц измерения длительности, используются специальные символы. Результат форматирования помещается в переменную ДлительностьСеминараФормат:

метод ФорматированиеДлительности(): неизвестно
пер ДлительностьСеминара = 1д5ч30м55с333мс
пер ДлительностьСеминараФормат = ДлительностьСеминара.Представление("дд:ЧЧ:мм")
возврат ДлительностьСеминараФормат // 01:05:30
;

Если в метод Представление() не передать ни одного аргумента, то будет использоваться значение по умолчанию: "ЗЧЧ:мм:сс".

Если в строке Формат отсутствуют специальные символы, обозначающие какую-либо временную единицу, то данная единица переводится в ближайшую меньшую временную единицу, символ которой присутствует в форматной строке:

1ч12м.Представление("м") → 72

Если символ ближайшей меньшей единицы отсутствует в форматной строке, то данная временная единица отбрасывается:

25м13с.Представление("м") → 25

Если символ ближайшей меньшей временной единицы отсутствует в форматной строке, однако ее значение может быть переведено в ближайшую бо́льшую временную единицу, символ которой присутствует в форматной строке (например, 60 секунд = 1 минута), тогда меньшая временная единица переводится в ближайшую бо́льшую временную единицу. Целая часть суммируется со значением большей временной единицы, если таковая уже присутствует в строке, а остаток отбрасывается:

25м65с.Представление("м") → 26

В случае указания некорректной форматной строки будет выброшено исключение Некорректная форматная строка. Неизвестный элемент форматной строки "[элемент]"..

Для того чтобы преобразовать длительность в формат ISO, можно использовать метод ВФорматеIso(). Данный метод осуществляет форматирование длительности по формату ISO-8601: PnDTnHnMn.nS, где D — дни, H — часы, M — минуты, S — секунды. Пример:

2д3ч4м.ВФорматеIso() → P2DT3H4M
(-6ч3м).ВФорматеIso() → -PT6H3M

Интерполяция​

Для интерполяции используется метод Шаблон() типа Строки. Он принимает как аргументы строку и переменные объекта, которые нужно вставить в эту строку. Индекс объектов отсчитывается с нуля, т. е. с %0.

Синтаксис:

Строки.Шаблон("Текст шаблона %Индекс1", объект с переменными)

Если объектов несколько, то передается список объектов:

Строки.Шаблон("Текст шаблона %Индекс1 ... %Индекс2 ... %ИндексN", [Объект1, Объект2, ..., ОбъектN])

Например:

метод ФорматированиеДатыВремени(): Строка
пер ДатаНачала = ДатаВремя{2024-05-21}
пер ДатаОкончания = ДатаВремя{2024-05-24}
пер ДатаНачалаФормат = ДатаНачала.Представление("дд ММММ")
пер ДатаОкончанияФормат = ДатаОкончания.Представление("дд ММММ гггг")
пер Период = Строки.Шаблон("С %0 по %1 года", [ДатаНачалаФормат, ДатаОкончанияФормат])
возврат Период // С 21 мая по 24 мая 2024 года
;
метод ФорматированиеДлительности(): Строка
пер МинимальнаяДлительность = 5ч30м55с333мс
пер МаксимальнаяДлительность = 7ч40м55с333мс
пер МинимальнаяДлительностьФормат = МинимальнаяДлительность.Представление("Ч 'ч' мм 'мин'")
пер МаксимальнаяДлительностьФормат = МаксимальнаяДлительность.Представление("Ч 'ч' мм 'мин'")
пер Диапазон = Строки.Шаблон("Длительность составит: от %0 до %1",
[МинимальнаяДлительностьФормат, МаксимальнаяДлительностьФормат])
возврат Диапазон // Длительность составит: от 5 ч 30 мин до 7 ч 40 мин
;

Список доступных форматов​

+--------+---------------------------------------------------------------------------------+------------------------------------+ | Формат | Описание | Пример | +========+=================================================================================+====================================+ | г | Год, в диапазоне от 0 до 99, без ведущего нуля. | xbsl test-ignore-example | | | | 0001-01-01T00:00:00 -> 1 | | | | 0900-01-01T00:00:00 -> 0 | | | | 1900-01-01T00:00:00 -> 0 | | | | 2009-06-15T13:45:30 -> 9 | | | | 2019-06-15T13:45:30 -> 19 | | | | | +--------+---------------------------------------------------------------------------------+------------------------------------+ | гг | Год, в диапазоне от 00 до 99, с ведущим нулем. | xbsl test-ignore-example | | | | 0001-01-01T00:00:00 -> 01 | | | | 0900-01-01T00:00:00 -> 00 | | | | 1900-01-01T00:00:00 -> 00 | | | | 2019-06-15T13:45:30 -> 19 | | | | | +--------+---------------------------------------------------------------------------------+------------------------------------+ | гггг | Год в виде четырехзначного числа, в диапазоне от 0000 до 9999, с ведущим нулем. | xbsl test-ignore-example | | | | 0001-01-01T00:00:00 -> 0001 | | | | 0900-01-01T00:00:00 -> 0900 | | | | 1900-01-01T00:00:00 -> 1900 | | | | 2009-06-15T13:45:30 -> 2009 | | | | | +--------+---------------------------------------------------------------------------------+------------------------------------+ | К | Квартал в формате 1-4. | xbsl test-ignore-example | | | | 2009-01-12T13:45:30.6170000 -> 1 | | | | | +--------+---------------------------------------------------------------------------------+------------------------------------+ | М | Месяц, в диапазоне от 1 до 12, без ведущего нуля. | xbsl test-ignore-example | | | | 2009-06-15T13:45:30 -> 6 | | | | | +--------+---------------------------------------------------------------------------------+------------------------------------+ | ММ | Месяц, в диапазоне от 01 до 12, с ведущим нулем. | xbsl test-ignore-example | | | | 2009-06-15T13:45:30 -> 06 | | | | | +--------+---------------------------------------------------------------------------------+------------------------------------+ | МММ | Сокращенное название месяца. | xbsl test-ignore-example | | | | 2009-01-15T13:45:30 -> янв. | | | | | +--------+---------------------------------------------------------------------------------+------------------------------------+ | ММММ | Полное название месяца. | xbsl test-ignore-example | | | | 2009-01-15T13:45:30 -> января | | | | | +--------+---------------------------------------------------------------------------------+------------------------------------+ | д | День месяца, в диапазоне от 1 до 31, без ведущего нуля. | xbsl test-ignore-example | | | | 2009-06-01T13:45:30 -> 1 | | | | 2009-06-15T13:45:30 -> 15 | | | | | +--------+---------------------------------------------------------------------------------+------------------------------------+ | дд | День месяца, в диапазоне от 01 до 31, с ведущим нулем. | xbsl test-ignore-example | | | | 2009-06-01T13:45:30 -> 01 | | | | 2009-06-15T13:45:30 -> 15 | | | | | +--------+---------------------------------------------------------------------------------+------------------------------------+ | ддд | Сокращенное название дня недели. | xbsl test-ignore-example | | | | 2009-06-15T13:45:30 -> пн | | | | | +--------+---------------------------------------------------------------------------------+------------------------------------+ | дддд | Полное название дня недели. | xbsl test-ignore-example | | | | 2009-06-15T13:45:30 -> понедельник | | | | | +--------+---------------------------------------------------------------------------------+------------------------------------+ | Д | Порядковый номер дня в неделе. | xbsl test-ignore-example | | | | 2009-01-12T13:45:30 -> 1 | | | | 2009-02-03T13:45:30 -> 2 | | | | | +--------+---------------------------------------------------------------------------------+------------------------------------+ | ДД | Порядковый номер дня в году. | xbsl test-ignore-example | | | | 2009-01-12T13:45:30 -> 12 | | | | 2009-02-03T13:45:30 -> 34 | | | | | +--------+---------------------------------------------------------------------------------+------------------------------------+ | ч | Час в 12-часовом формате, в диапазоне от 1 до 12, без ведущего нуля. | xbsl test-ignore-example | | | | 2009-06-15T01:45:30 -> 1 | | | | 2009-06-15T13:45:30 -> 1 | | | | | +--------+---------------------------------------------------------------------------------+------------------------------------+ | чч | Час в 12-часовом формате, в диапазоне от 01 до 12, с ведущим нулем. | xbsl test-ignore-example | | | | 2009-06-15T01:45:30 -> 01 | | | | 2009-06-15T13:45:30 -> 01 | | | | | +--------+---------------------------------------------------------------------------------+------------------------------------+ | Ч | Час в 24-часовом формате, в диапазоне от 0 до 23, без ведущего нуля. | xbsl test-ignore-example | | | | 2009-06-15T01:45:30 -> 1 | | | | 2009-06-15T13:45:30 -> 13 | | | | | +--------+---------------------------------------------------------------------------------+------------------------------------+ | ЧЧ | Час в 24-часовом формате, в диапазоне от 00 до 23, с ведущим нулем. | xbsl test-ignore-example | | | | 2009-06-15T01:45:30 -> 01 | | | | 2009-06-15T13:45:30 -> 13 | | | | | +--------+---------------------------------------------------------------------------------+------------------------------------+ | м | Минуты, в диапазоне от 0 до 59, без ведущего нуля. | xbsl test-ignore-example | | | | 2009-06-15T01:09:30 -> 9 | | | | 2009-06-15T13:29:30 -> 29 | | | | | +--------+---------------------------------------------------------------------------------+------------------------------------+ | мм | Минуты, в диапазоне от 00 до 59, с ведущим нулем. | xbsl test-ignore-example | | | | 2009-06-15T01:09:30 -> 09 | | | | 2009-06-15T01:45:30 -> 45 | | | | | +--------+---------------------------------------------------------------------------------+------------------------------------+ | с | Секунды, в диапазоне от 0 до 59, без ведущего нуля. | xbsl test-ignore-example | | | | 2009-06-15T13:45:09 -> 9 | | | | | +--------+---------------------------------------------------------------------------------+------------------------------------+ | сс | Секунды, в диапазоне от 00 до 59, с ведущим нулем. | xbsl test-ignore-example | | | | 2009-06-15T13:45:09 -> 09 | | | | | +--------+---------------------------------------------------------------------------------+------------------------------------+ | С | Миллисекунды с точностью до сотен, в диапазоне от 0 до 9. | xbsl test-ignore-example | | | | 2009-06-15T13:45:09.345 -> 3 | | | | | +--------+---------------------------------------------------------------------------------+------------------------------------+ | СС | Миллисекунды с точностью до десятков, в диапазоне от 0 до 99. | xbsl test-ignore-example | | | | 2009-06-15T13:45:09.345 -> 34 | | | | | +--------+---------------------------------------------------------------------------------+------------------------------------+ | ССС | Миллисекунды с точностью до единиц, в диапазоне от 0 до 999. | xbsl test-ignore-example | | | | 2009-06-15T13:45:09.345 -> 345 | | | | | +--------+---------------------------------------------------------------------------------+------------------------------------+

примечание

Некоторые значения для типа Момент могут отличаться (подробнее).

Список специальных символов для форматирования длительности​

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

+--------+--------------------------------------------------------------+--------------------------------------------------+ | Символ | Описание | Пример | +========+==============================================================+==================================================+ | д | Количество дней. Количество идущих подряд букв д | xbsl test-ignore-example | | | задает количество цифр, которое будет использовано | 11д2ч3м4с.Представление("д") → 11 | | | при выводе значения. При этом количество цифр в | 1д2ч3м4с.Представление("дд") → 01 | | | выводе = МАКС(количество символов `д`, | | | | минимально необходимое количество цифр для | | | | вывода значения). | | +--------+--------------------------------------------------------------+--------------------------------------------------+ | Ч | Количество часов. Количество подряд идущих букв Ч | xbsl test-ignore-example | | | задает количество цифр, которое будет использовано | 22ч3м4с.Представление("Ч") → 22 | | | при выводе значения. При этом количество цифр в | 2ч3м4с.Представление("ЧЧ") → 02 | | | выводе = МАКС(количество символов `Ч`, | | | | минимально необходимое количество цифр для | | | | вывода значения). | | +--------+--------------------------------------------------------------+--------------------------------------------------+ | м | Количество минут. Количество подряд идущих букв м | xbsl test-ignore-example | | | задает количество цифр, которое будет использовано | 33м4с.Представление("м") → 33 | | | при выводе значения. При этом количество цифр в | 3м4с.Представление("мм") → 03 | | | выводе = МАКС(количество символов `м`, | | | | минимально необходимое количество цифр для вывода значения). | | +--------+--------------------------------------------------------------+--------------------------------------------------+ | с | Количество секунд. Количество подряд идущих букв | xbsl test-ignore-example | | | `с` задает количество цифр, которое будет | 44с300мс.Представление("с") → 44 | | | использовано при выводе значения. При этом | 4с300мс.Представление("сс") → 04 | | | количество цифр в выводе = МАКС(количество | | | | символов с, минимально необходимое количество | | | | цифр для вывода значения). | | +--------+--------------------------------------------------------------+--------------------------------------------------+ | С | Количество миллисекунд. Количество идущих подряд | xbsl test-ignore-example | | | букв `С` задает количество цифр, которое будет | 300мс.Представление("С") → 300 | | | использовано при выводе значения. При этом | 300мс.Представление("СССС") → 0300 | | | количество цифр в выводе = МАКС(количество | | | | символов С, минимально необходимое количество | | | | цифр для вывода значения). | | +--------+--------------------------------------------------------------+--------------------------------------------------+ | З | Знак длительности. Если длительность положительная, | xbsl test-ignore-example | | | отформатированное значение выводится без знака | 20ч30м40с.Представление("ЗЧ:м:с") → 20:30:40 | | | минуса, если длительность отрицательная, | (-20ч30м40с).Представление("ЗЧ:м:с") → -20:30:40 | | | отформатированное значение выводится с минусом. | (-20ч30м40с).Представление("Ч:м:с") → 20:30:40 | | | | | +--------+--------------------------------------------------------------+--------------------------------------------------+

См. также​

- Тип «ДатаВремя»