Работа с датами
5 мин
Инициализация
1. Литералом типа дата (строка цифр в одинрных кавычках 'ГодМесяцДеньЧасМинутаСекунда').
Дата = '30300102125536';
Сообщить(Дата); // 02.01.3030 12:55:36
Дата = '30300102';
Сообщить(Дата); // 02.01.3030 0:00:00
2. Функцией Дата(<Значение>)
- <Значение> (обязательный) — Строка в виде литерала даты.
Возвращает дату.
Дата = Дата("30300102125536");
Сообщить(Дата); // 02.01.3030 12:55:36
Дата = Дата("3030", "1", "2", "12", "55", "36");
Сообщить(Дата); // 02.01.3030 12:55:36
Функции работы с датами
1. Год(<Дата>), Месяц(<Дата>), День(<Дата>), Минута(<Дата>), Секунда(<Дата>)
- <Дата> (обязательный) - исходная дата.
Возвращают число, фрагмент даты в виде числа.
Сообщить(Год('30300201')); // 3 030
Сообщить(Месяц('30300201')); // 2
Сообщить(День('30300201')); // 1
Сообщить(Минута('303002011234')); // 34
Сообщить(Секунда('30300201123456')); // 56
2. ДеньГода(<Дата>), НеделяГода(<Дата>), ДеньНедели(<Дата>)
- <Дата> (обязательный) - исходная дата.
Возвращают порядковый номер даты в периоде.
Сообщить(ДеньГода('30300201')); // 32
Сообщить(НеделяГода('30300201')); // 6
Сообщить(ДеньНедели('30300201')); // 1
3. КонецГода(<Дата>), КонецКвартала(<Дата>), КонецМесяца(<Дата>), КонецНедели(<Дата>), КонецДня(<Дата>), КонецЧаса(<Дата>), КонецМинуты(<Дата>)
- <Дата> (обязательный) - исходная дата.
Возвращают Конец периода.
Сообщить(КонецГода('30300202 20:21:43')); // 31.12.3030 23:59:59
Сообщить(КонецКвартала('30300202 20:21:43')); // 31.03.3030 23:59:59
Сообщить(КонецМесяца('30300202 20:21:43')); // 28.02.3030 23:59:59
Сообщить(КонецНедели('30300202 20:21:43')); // 07.02.3030 23:59:59
Сообщить(КонецДня('30300202 20:21:43')); // 02.02.3030 23:59:59
Сообщить(КонецЧаса('30300202 20:21:43')); // 02.02.3030 20:59:59
Сообщить(КонецМинуты('30300202 20:21:43')); // 02.02.3030 20:21:59
4. НачалоГода(<Дата>), НачалоКвартала(<Дата>), НачалоМесяца(<Дата>), НачалоНедели(<Дата>), НачалоДня(<Дата>), НачалоЧаса(<Дата>), НачалоМинуты(<Дата>)
- <Дата> (обязательный) - исходная дата.
Возвращают Начало периода.
Сообщить(НачалоГода('30300202 20:21:43')); // 01.01.3030 0:00:00
Сообщить(НачалоКвартала('30300202 20:21:43')); // 01.01.3030 0:00:00
Сообщить(НачалоМесяца('30300202 20:21:43')); // 01.02.3030 0:00:00
Сообщить(НачалоНедели('30300202 20:21:43')); // 01.02.3030 0:00:00
Сообщить(НачалоЧаса('30300202 20:21:43')); // 02.02.3030 20:00:00
Сообщить(НачалоМинуты('30300202 20:21:43')); // 02.02.3030 20:21:00
4. ТекущаяДата(),
Возвращают текущую дату.
Сообщить(ТекущаяДата());
5. ДобавитьМесяц(<Дата>, <ЧислоМесяцев>)
- <Дата> (обязательный) - Дата - исходная дата
- <ЧислоМесяцев> (обязательный) - Число - количество месяцев
Возвращает дату, к которой прибавили (вычли) заданное число месяцев.
Дата = '2030-02-03 23:55:01'; // 03.02.2030 23:55:01
Результат = ДобавитьМесяц(Дата, 2);
Сообщить(Результат); // 03.04.2030 23:55:01
Дата = '2030-02-03 23:55:01'; // 03.02.2030 23:55:01
Результат = ДобавитьМесяц(Дата, -1);
Сообщить(Результат); // 03.01.2030 23:55:01
Над датами можно выполнять арифметические операции - добавлять и вычитать секунды. Кроме того разность дат преобразуется к секундам, а сумму дат сложением вычислить нельзя.
Дата = '2030-02-03 23:55:01'; // 03.02.2030 23:55:01
СекундВСутках = 60 * 60 * 24; // 86 400
ДатаУвеличеннаяНаСутки = Дата + СекундВСутках;
Сообщить(ДатаУвеличеннаяНаСутки); // 04.02.2030 23:55:01
Дата1 = '2030-02-03 23:55:01'; // 03.02.2030 23:55:01
Дата2 = '2030-02-03 22:55:01'; // 03.02.2030 22:55:01
РазностьДат = Дата1 - Дата2;
Сообщить(РазностьДат); // 3 600 секунд или 1 час
РазностьДат = Дата2 - Дата1;
Сообщить(РазностьДат); // -3 600
6. Макс(<Значение1>,...,<ЗначениеN>), Мин(<Значение1>,...,<ЗначениеN>), СравнениеЗначений
- <Значение1>,...,<ЗначениеN> (обязательный) - Число, Строка, Дата, Булево - перечень значений для сравнения
Возвращают результат сравнение дат.
Дата1 = '20020715220000'; // 15.07.2002 22:00:00
Дата2 = '20020714'; // 14.07.2002 0:00:00
Дата3 = '20020714091500'; // 14.07.2002 9:15:00
МаксимальнаяДата = Макс('20020715220000', '20020714', '20020714091500');
Сообщить(МаксимальнаяДата); // 15.07.2002 22:00:00
МинимальнаяДата = Мин('20020715220000', '20020714', '20020714091500');
Сообщить(МинимальнаяДата); // 14.07.2002 0:00:00
Сравнение значений - метод Сравнить(<Значение1>, <Значение2>) сравнивает два значения и возвращает число:
- 1 - Значение1 > Значчение2
- -1 - Значение1 < Значение2
- 0 - Значение1 = Значение2
СравнениеЗначений = Новый СравнениеЗначений;
Сообщить(СравнениеЗначений.Сравнить('30300101', '20200101')); // 1
Сообщить(СравнениеЗначений.Сравнить('20200101', '30300101')); // -1
Сообщить(СравнениеЗначений.Сравнить('20200101', '20200101')); // 0
Сравнивать значения дат допустимо операторами «=, >, <», в результате получим Истина или Ложь.
Результат = '30300101' < '20200101';
Сообщить(Результат); // Нет
Примеры
1. Добавить год к дате
ДатаНачала = '30300201';
СрокЛет = 5;
ДатаОкончания = Дата(Год(ДатаНачала) + СрокЛет, Месяц(ДатаНачала), День(ДатаНачала));
Сообщить(ДатаОкончания); // 01.02.3035 0:00:00
2. Вычислить разницу лет между датами
ДатаНачала = '30300312'; // 12.03.3030 0:00:00
ДатаОкончания = '30350312'; // 12.03.3035 0:00:00
ЛетПрошло = Год(ДатаОкончания) - Год(ДатаНачала);
Сообщить(ЛетПрошло); // 5
3. Количество дней в году
Год = "3030";
КоличествоДнейВГоду = ДеньГода(Дата(Год, 12, 31));
Сообщить(КоличествоДнейВГоду); // 365
4. Получить номер квартала
Дата = '30300601'; // 01.06.3030 0:00:00
НомерКвартала = Месяц(КонецКвартала(Дата)) / 3;
Сообщить(НомерКвартала);
5. Дата три года назад
Дата = '30300201'; // 01.02.3030 0:00:00
Сообщить(Дата);
ТриГодаНазад = ДобавитьМесяц(Дата, -36);
Сообщить(ТриГодаНазад); // 01.02.3027 0:00:00