1с статьи | Курс-репетитор программиста 1С
Даты

Установка даты

// Инициализировать дату можно с помощью одинарных кавычек
// Формат 'ГодМесяцДеньЧасМинутаСекунда'
Сообщить('20231230210102');

// Игнорируются все значения, отличные от цифр. 
// Разделители используются для упрощения  
Сообщить('2023.12.30 21:01:03');
Сообщить('2023\12\30-21~01~04');

// Обязательно должно задаваться значение года, месяца и дня. 
// Допускается опускать либо время целиком, либо только секунды.	
Сообщить('2023.12.30');
Сообщить('2023\12\30-21~01');

Показать решение

Установка даты из другого типа

// Преобразование Типа Строка в Тип Дата
// Формат строки "ГодМесяцДеньЧасМинутаСекунда"
ДатаИзСтроки = Дата("20231230210105");
Сообщить(ДатаИзСтроки);

// Или
ГодСтрока     = "2023";
МесяцСтрока   = "12";
ДеньСтрока    = "30";
ЧасСтрока     = "21";
МинутаСтрока  = "01";
СекундаСтрока = "06";

ДатаИзСтроки  = Дата(ГодСтрока + МесяцСтрока + ДеньСтрока + 
	ЧасСтрока + МинутаСтрока + СекундаСтрока); 
Сообщить(ДатаИзСтроки);

// Преобразование Типа Число в Тип Дата
ГодЧисло     = 2023;
МесяцЧисло   = 12;
ДеньЧисло    = 30;
ЧасЧисло     = 21;
МинутаЧисло  = 01;
СекундаЧисло = 07;
ДатаИзЧисла  = Дата(ГодЧисло, МесяцЧисло, ДеньЧисло, 
	ЧасЧисло, МинутаЧисло, СекундаЧисло);

Сообщить(ДатаИзЧисла);

Показать решение

Методы работы с типом Дата


// Инициализируем Дату для дальнейшей работы
НашаДата = '20230920210102'; //20.09.2023 21:01:02

НачалоГода      = НачалоГода(НашаДата);		// 01.01.2023 00:00:00
НачалоКвартала 	= НачалоКвартала(НашаДата);	// 01.07.2023 00:00:00
НачалоМесяца 	= НачалоМесяца(НашаДата);	// 01.09.2023 00:00:00
НачалоНедели 	= НачалоНедели(НашаДата);	// 18.09.2023 00:00:00
НачалоДня       = НачалоДня(НашаДата);		// 20.09.2023 00:00:00
НачалоЧаса      = НачалоЧаса(НашаДата);		// 20.09.2023 21:00:00
НачалоМинуты 	= НачалоМинуты(НашаДата);	// 20.09.2023 21:01:00	

КонецГода       = КонецГода(НашаДата);		// 31.12.2023 23:59:59
КонецКвартала 	= КонецКвартала(НашаДата);	// 30.09.2023 23:59:59
КонецМесяца 	= КонецМесяца(НашаДата);	// 30.09.2023 23:59:59
КонецНедели 	= КонецНедели(НашаДата);	// 30.09.2023 23:59:59
КонецДня        = КонецДня(НашаДата);		// 20.09.2023 23:59:59
КонецЧаса       = КонецЧаса(НашаДата);		// 20.09.2023 21:59:59
КонецМинуты 	= КонецМинуты(НашаДата);	// 20.09.2023 21:01:59
	
// Получение частей даты. На выходе тип Число

Год 	= Год(НашаДата); 	//2023
Месяц 	= Месяц(НашаДата); 	//12
День 	= День(НашаДата);	//30
Час 	= Час(НашаДата);	//21
Минута 	= Минута(НашаДата);	//1
Секунда = Секунда(НашаДата);//2

// Получение порядкового номера дня в году
НомерДняВГоду = ДеньГода(НашаДата);	//263 
Сообщить(НомерДняВГоду); 

// Получение порядкового номера дня в неделе (1 - понедельник)
НомерДняВНеделе = ДеньНедели(НашаДата);	//3 
Сообщить(НомерДняВНеделе);

// Получение порядкового номера недели в году
НомерНеделиВГоду = НеделяГода(НашаДата); //39
Сообщить(НомерНеделиВГоду);

Показать решение

Операции с типом Дата

// Инициализируем Дату для дальнейшей работы
НашаДата = '20230920210102'; //20.09.2023 21:01:02

// Сложение и вычитание Даты с Числом. 
// Число всегда будет неявно преобразовано в секунды 
НаСорокСекундБольше    = НашаДата + 40; //20.09.2023 21:01:42
НаТридцатьСекундБольше = НашаДата + 30; //20.09.2023 21:01:32
НаДвадцатьСекундМеньше = НашаДата - 20; //20.09.2023 21:00:42

// Операции с месяцем
НаМесяцБольше       = ДобавитьМесяц(НашаДата, 1);	// 20.10.2023 21:01:32
НаТриМесяцаБольше   = ДобавитьМесяц(НашаДата, 3);	// 20.12.2023 21:01:32
ДваМесяцаНазад      = ДобавитьМесяц(НашаДата, -2);	// 20.07.2023 21:01:32

// Арифметические операции с датами

// Складывать даты можно только с числами, которые преобразовуются в секунды
// Ошибка: преобразование к типу Число не может быть выполнено
СуммаДат = НашаДата + Дата(2023, 12, 09, 12, 21, 01);

// Если вычесть даты, ответ будет в секундах
РазностьДат = НашаДата - Дата("20230820210102");//2 678 400

// Что с миллисекундами?
ДатаС_Миллисекундами = НашаДата + 0.1;	
МиллисекундВДате     = ДатаС_Миллисекундами - НашаДата;

Если ЗначениеЗаполнено(МиллисекундВДате) Тогда
	Сообщить(СтрШаблон("Даты разные. Разница дат: %1", МиллисекундВДате));
Иначе
	Сообщить("Даты совпадают. Миллисекунды не учитываются.");
КонецЕсли;

Показать решение

Слишком маленькое разрешение экрана.