К статьям

Работа с датами

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

Задачи на эту тему:

Рейтинг 0

Комментарии