1С 8.3 Дата и время - Программист 1С Минск. Автоматизация бизнеса.

Перейти к контенту

1С 8.3 Дата и время

Данные > Примеры кода 1С > 1С 8.3 Дата и время
Реклама:
Дата в 1С 8.3 - это примитивный тип данных, который всегда имеет формат: год, месяц, день, час, минута, секунда. Поэтому переменная типа дата содержит не только дату, но и время. Простой способ создания новой переменной типа дата является приравнивание к переменной строки цифр в одинарных кавычках вида 'ГГГГММДДччммсс' (если часы, минуты и секунды не указывать, то они приравниваются к 00:00:00) где:
ГГГГ — четыре цифры года (включая тысячелетие и век);
ММ — две цифры месяца;
ДД — две цифры даты;
чч — две цифры часа (в 24-х часовом формате);
мм — две цифры минут;
сс — две цифры секунд.
Работа с датой и временем в 1С 8.3:
&НаКлиенте
Процедура РаботаСДатойИВременем(Команда)

   
// Установка даты в переменную
   
ТолькоДата = '20200415'; // 15.04.2020

    // Преобразование строки в дату
   
ТолькоДата = Дата("20200415"); // 15.04.2020

    // Преобразование чисел в дату отдельными частями
   
ТолькоДата = Дата(2020, 04, 15); // 15.04.2020

    // Установка в дате: часы, минуты и секунды
   
ДатаВремя = '20200415162703'; // 15 апреля 2020 г. 16 ч. 27 мин. 03 сек.

    // Получение года (месяца, дня, часа, минуты, секунды) у даты
   
Год_Даты = Год(ДатаВремя); // 2020
   
Месяц_Даты = Месяц(ДатаВремя); // 4
   
День_Даты = День(ДатаВремя); // 15
   
Час_Даты = Час(ДатаВремя); // 16
   
Минута_Даты = Минута(ДатаВремя); // 27
   
Секунда_Даты = Секунда(ДатаВремя); // 03

    // Прибавление к дате 3 секунды
   
Сообщить(ДатаВремя + 3); // 15.04.2020 16:27:06

    // Прибавление к дате два месяца
   
Сообщить(ДобавитьМесяц(ДатаВремя, 2));// 15.06.2020 16:27:03

    // Вычитание от даты одного месяца
   
Сообщить(ДобавитьМесяц(ДатаВремя, -1));// 15.03.2020 16:27:03

     // Получение текущей (рабочей) даты
   
Сообщить(ТекущаяДата());

КонецПроцедуры
Прибавить день к дате или вычесть день из даты в 1С 8.3:
&НаКлиенте
Процедура ОперацииДеньДата(Команда)

   
Сообщить(МатематикаДень('20200415', 1)); //16.04.2020 0:00:00
   
Сообщить(МатематикаДень('20200415', -1)); //14.04.2020 0:00:00

КонецПроцедуры

&НаКлиенте
Функция МатематикаДень(Дата, ЧислоДней)

    Возврат
Дата+86400*ЧислоДней;// 86400 сек.

КонецФункции
Дополнительные функции при работе с датой в 1С 8.3:
&НаКлиенте
Процедура ДополнительныеФункцииДаты(Команда)

   
ДатаВремя = '20200415162703'; // 15 апреля 2020 г. 16:27:03

   
Сообщить(ДеньГода(ДатаВремя)); // 15

   
Сообщить(ДеньНедели(ДатаВремя)); // 3 - Среда (нумерация с понедельника "1")

   
Сообщить(НеделяГода(ДатаВремя)); // 3 Неделя

   
Сообщить(НачалоГода(ДатаВремя)); // 01.01.2020 0:00:00
   
Сообщить(КонецГода(ДатаВремя)); // 31.12.2020 23:59:59

   
Сообщить(НачалоКвартала(ДатаВремя)); // 01.04.2020 0:00:00
   
Сообщить(КонецКвартала(ДатаВремя)); // 30.06.2020 23:59:59

   
Сообщить(НачалоМесяца(ДатаВремя)); // 01.04.2020 0:00:00
   
Сообщить(КонецМесяца(ДатаВремя)); // 30.04.2020 23:59:59

   
Сообщить(НачалоНедели(ДатаВремя)); // 13.04.2020 0:00:00
   
Сообщить(КонецНедели(ДатаВремя)); // 19.04.2020 23:59:59

   
Сообщить(НачалоДня(ДатаВремя)); // 15.04.2020 0:00:00
   
Сообщить(КонецДня(ДатаВремя)); // 15.04.2020 23:59:59

   
Сообщить(НачалоЧаса(ДатаВремя)); // 15.04.2020 16:00:00
   
Сообщить(КонецЧаса(ДатаВремя)); // 15.04.2020 16:59:59

   
Сообщить(НачалоМинуты(ДатаВремя)); // 15.04.2020 16:27:00
   
Сообщить(КонецМинуты(ДатаВремя)); // 15.04.2020 16:27:59

КонецПроцедуры
Преобразование в дату десятисимвольной строки в 1С 8.3:
&НаКлиенте
Процедура ПреобразованиеВДатуСтроки10Симв(Команда) // "15.04.2020" преобразуем в '15.04.2020 0:00:00'

    // Строковая дата без времени преобразовывается в дату со временем:
   
СтрокаДаты="15.04.2020";
   
ТолькоДата = Дата(Сред(СтрокаДаты,7,4)+Сред(СтрокаДаты,4,2)+Сред(СтрокаДаты,0,2)); // формат даты '15.04.2020 0:00:00'

КонецПроцедуры
Проверка на пустое значение даты (заполнение) в 1С 8.3:
&НаКлиенте
Процедура ПроверкаНаПустоеЗначениеДаты(Команда)
   
ПустаяДата = '00010101';

   
//способ №1
   
Если ПустаяДата = '00010101' Тогда
       
Сообщить("Эта дата пустая");
    КонецЕсли;

   
//способ №2
   
Если ПустаяДата = Дата(1,1,1) Тогда
       
Сообщить("Эта дата пустая");
    КонецЕсли;

   
//способ №3
   
Если НЕ ЗначениеЗаполнено(ПустаяДата) Тогда
       
Сообщить("Эта дата пустая");
    КонецЕсли;

КонецПроцедуры
Сравнение двух дат в 1С 8.3:
&НаКлиенте
Процедура СравнениеДат(Команда)

   
Дата1 = '20200415'; // 15.04.2020
   
Дата2 = '20200415'; // 15.04.2020

   
Если Дата1.Сравнить(Дата2) = 0 Тогда
       
Сообщить("Даты равны");
    КонецЕсли;

КонецПроцедуры
Расчет количества дней между датами в 1С 8.3:
&НаКлиенте
Процедура РасчетКоличестваДнейМеждуДатами(Команда)

   
ДатаНач = '20200415';
   
ДатаКон = '20200417';

   
РазницаВСекундах = ДатаКон - ДатаНач; // 172800 секунды
   
РазницаВДнях = Цел(РазницаВСекундах/86400); // 2 дня

КонецПроцедуры
Расчет количества дней между датами ЗАПРОСОМ в 1С 8.3:
&НаКлиенте
Процедура РасчетКоличестваДнейМеждуДатамиЗапросом(Команда)

   
ДатаНач = '20200415';
   
ДатаКон = '20200417';

   
Сообщить(РазницаДатНаСервере(ДатаНач, ДатаКон, "ДЕНЬ")); //2 дня

КонецПроцедуры

&НаСервере
Функция РазницаДатНаСервере(ДатаНач, ДатаКон, СтрПериод)

   
//СтрПериод - может быть "ДЕНЬ", "НЕДЕЛЯ", "МЕСЯЦ", "ГОД"
   
Запрос = Новый Запрос("ВЫБРАТЬ РАЗНОСТЬДАТ(&ДатаНач, &ДатаКон, "+СтрПериод+") КАК РазностьДат");
   
Запрос.УстановитьПараметр("ДатаНач", ДатаНач);
   
Запрос.УстановитьПараметр("ДатаКон", ДатаКон);

    Возврат
Запрос.Выполнить().Выгрузить()[0].РазностьДат;

КонецФункции
Узнать текущую дату в миллисекундах в 1С 8.3:
&НаКлиенте
Процедура УзнатьТекущуюДатуВМиллисекундах(Команда)

   
Сообщить(ТекущаяУниверсальнаяДатаВМиллисекундах()); //79 452 791 027 745

КонецПроцедуры
Шаблоны (готовые модели) кода 1С 8.3 с тегом #Дата и время:
Поиск кода
0
комментарии
____________________
Copyright by 1Cnik.by©, «Программист 1С в г.Минске», 03.04.2020
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Защищенное соединение ssl
visa
mastercard
Maestro
Яндекс деньги
Назад к содержимому