Тип данных Дата позволяет привязывать события учета к шкале времени. Для этого значения типа Дата могут хранить три варианта даты:
- только дату
01.01.2020
- только время
10:30:00
- дату и время
01.01.2020 10:30:00
На физическом уровне (в таблицах базы данных) тип Дата хранится в числовом виде, представляя количество секунд, прошедшее с 1 января 0001 года. Верхняя граница технически ограничена значением 31.12.3999 23:59:59
Дату в коде можно представить двумя способами:
- Как литерал, заключенный в одинарные кавычки:
'20200101'
— только дата;'20200101103000'
— дата и время - С помощью функции Дата(), конструирующей дату из составных частей:
Дата(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
Функции работы с датой
Дата() | функция преобразования к типу дата |
ТекущаяДата() | возвращает текущую дату |
НачалоДня() | возвращает дату и время начала дня для даты |
КонецДня() | возвращает дату и время конца дня для даты |
ДобавитьМесяц() | добавляет к дате целое число месяцев |
ДеньНедели() | возвращает номер дня недели для даты |
Внимание! В таблице перечислены не все функции работы с датой
Так тоже работает:
Сообщить(Дата(«12.20.2001 12:15:00»))
только дату нужно полностью указывать до секунд
Хм… В документации для метода Дата() сказано: «Строка должна содержать дату в локальном формате даты или каноническом виде…», но это все весьма условно и зависит от региональных установок ИБ… С точки зрения разработки надежнее работать с датой в каноническом виде YYYYMMDDHHMMSS. Так ее не придется переписывать для адаптации под пользователей из других стран.
а какие еще функции работы с датой? Сказали «А», говоритн «Б»
фраза «все функции работы с датой» — это ссылка. Можно кликнуть и перейти ко всем функциям, либо воспользоваться поиском)