Руководство по встроенному языку » 
2

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

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

  • только  дату 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

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

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

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

Комментарии

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

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

Добавить комментарий для Александр К. Отменить ответ

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