1. Руководство по встроенному языку
4

Программная работа с датой

Тип данных Дата позволяет привязывать события учета к шкале времени. Для этого значения типа Дата могут хранить три варианта даты:

  • только  дату 01.01.2020
  • только время 10:30:00
  • дату и время 01.01.2020 10:30:00

На физическом уровне (в таблицах базы данных) тип Дата хранится в числовом виде, представляя количество секунд, прошедшее с 1 января 0001 года. Верхняя граница технически ограничена значением 31.12.3999 23:59:59

Дату в коде можно представить двумя способами:

  1. Как литерал, заключенный в одинарные кавычки: '20200101' — только дата; '20200101103000' — дата и время
  2. С помощью функции Дата(), конструирующей дату из составных частей: Дата(2020, 1, 1) — только дата; Дата(2020, 1, 1, 10, 30, 0) — дата и время

Обратите внимание, что составные части даты имеют одну и ту же последовательность: год, месяц, день, час, минута, секунда. Схематично это можно представить так:

20200101103000  (дата + время)
ГГГГ----------- номер года
    ММ--------- номер месяца
      ДД------- номер дня месяца
        чч----- час
          мм--- минута
            сс- секунда

Операции с датой

Сложение

Поскольку дата на физическом уровне приводится к числовому значению, то прибавив к нему некоторое числовое значение, вы снова получите число. При сложении даты и числа, последнее воспринимается платформой, как количество прибавляемых секунд:

НоваяДата = НачалоЧаса(ТекущаяДата()) + 3600;

Здесь важно соблюдать последовательность операндов: на первом месте должна идти дата, а затем число. Например, следующий код будет ошибочным:

НоваяДата = 3600 + ТекущаяДата();//неверно!!!

Причем, с ошибкой Вы столкнетесь только на этапе выполнения программы!

Вычитание

Вычитание — операция обратная от сложения. Это равноценно тому, что мы прибавляли бы к дате отрицательное значение. Здесь также важно соблюдать последовательность:

НоваяДата = НачалоЧаса(ТекущаяДата()) - 3600;

Кроме того, можно из одной даты, вычесть другую и мы получим длину интервала в секундах:

ДатаНачала = Дата(2020,1,1,10,30,0);
ДатаОкончания = Дата(2020,1,1,11,30,0);
ДлинаИнтервала = ДатаОкончания - ДатаНачала;
Сообщить(ДлинаИнтервала);
//Результат:
//	3 600

Склеивание (конкатенация)

В том случае, если вы работаете со строковыми представлениями даты, возможна обычная конкатенация (склеивание) строк:

НачалоДня = "20200101";
ДесятьЧасов = "100000";
НоваяДата = НачалоДня + ДесятьЧасов;
Сообщить(Дата(НоваяДата));
//результат:
01.01.2020 10:00:00

Функции работы с датой

Дата() функция преобразования к типу дата
ТекущаяДата() возвращает текущую дату
НачалоДня() возвращает дату и время начала дня для даты
КонецДня() возвращает дату и время конца дня для даты
ДобавитьМесяц() добавляет к дате целое число месяцев
ДеньНедели() возвращает номер дня недели для даты

Внимание! В таблице перечислены не все функции работы с датой

Поделиться страницей в соц.сетях

4 комментария к записи “Программная работа с датой

  1. Так тоже работает:
    Сообщить(Дата(«12.20.2001 12:15:00»))
    только дату нужно полностью указывать до секунд

    1. Хм… В документации для метода Дата() сказано: «Строка должна содержать дату в локальном формате даты или каноническом виде…», но это все весьма условно и зависит от региональных установок ИБ… С точки зрения разработки надежнее работать с датой в каноническом виде YYYYMMDDHHMMSS. Так ее не придется переписывать для адаптации под пользователей из других стран.

    1. фраза «все функции работы с датой» — это ссылка. Можно кликнуть и перейти ко всем функциям, либо воспользоваться поиском)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *