Получить представление [разницы] времени

Добавил: markers 1

Дата


Функцию удобно использовать для всяких обработок, чтобы получать время выполнения в наглядном виде. Поддерживает разницу дат в милисекундах (но не отлажено полностью эта функция)
// Возвращает представление прошедшего времени
//
// Параметры:
//  РазницаВремени  - Число - Высчитанная разница времени в секундах/милисекундах
//	ВремяВМилисекундах - Булево - Время передано в милисекундах
//
// Возвращаемое значение:
//   Строка   - Представление разницы времени
//
Функция ПолучитьПредставлениеВремени(РазницаВремени, ВремяВМилисекундах = Ложь) Экспорт
	
	РазмерЧаса = 3600;
	РазмерМинуты = 60;
	РазмерСекунды = 1;
	
	Если ВремяВМилисекундах Тогда
		
		РазмерЧаса = РазмерЧаса * 1000;
		РазмерМинуты = РазмерМинуты * 1000;
		РазмерСекунды = РазмерСекунды * 1000;
		
	КонецЕсли;
	
	Часов = Цел(РазницаВремени / РазмерЧаса);
	Минут = Цел((РазницаВремени - (Часов * РазмерЧаса)) / РазмерМинуты);
	Секунд = Цел((РазницаВремени - ((Часов * РазмерЧаса) + (Минут * РазмерМинуты))) / РазмерСекунды);
	
	Если ВремяВМилисекундах Тогда
		
		Милисекунд = РазницаВремени - ((Часов * РазмерЧаса) + (Минут * РазмерМинуты) + (Секунд * РазмерСекунды));
		
	Иначе
		
		Милисекунд = Цел((РазницаВремени - ((Часов * РазмерЧаса) + (Минут * РазмерМинуты) + (Секунд * РазмерСекунды))) * 1000);
		
	КонецЕсли;
	
	ВремяТекст = "";
	
	Если РазницаВремени >= РазмерЧаса Тогда
		
		//ВремяТекст = ВремяТекст + Строка(Часов) + " час.";
		ВремяТекст = ВремяТекст + " " + СтрокаСЧислом(";%1 час;;%1 часа;%1 часов;%1 часа", Часов, ВидЧисловогоЗначения.Количественное);
		
	КонецЕсли;
	
	Если РазницаВремени >= РазмерМинуты Тогда
		
		//ВремяТекст = ВремяТекст + ?(Часов > 0, ?(Секунд > 0, " ", " и "), "") + Строка(Минут) + " мин.";
		ВремяТекст = ВремяТекст + ?(Часов > 0, ?(Секунд > 0, " ", " и "), "") + " " + СтрокаСЧислом(";%1 минута;;%1 минуты;%1 минут;%1 минут", Минут, ВидЧисловогоЗначения.Количественное);
		
	КонецЕсли;
	
	Если РазницаВремени >= РазмерСекунды и Секунд > 0 Тогда
		
		//ВремяТекст = ВремяТекст + ?(Минут > 0, ?(Милисекунд > 0, " ", " и "), "") + Строка(Секунд) + " сек.";
		ВремяТекст = ВремяТекст +  ?(Минут > 0, ?(Милисекунд > 0, " ", " и "), "") + " " + СтрокаСЧислом(";%1 секунда;;%1 секунды;%1 секунд;%1 секунд", Секунд, ВидЧисловогоЗначения.Количественное);
		
	КонецЕсли;
	
	Если Милисекунд > 0 и РазницаВремени <= РазмерСекунды Тогда
		
		//ВремяТекст = ВремяТекст + ?(Секунд > 0, " и ", "") + Строка(Милисекунд) + " мсек.";
		ВремяТекст = ВремяТекст + Строка(Милисекунд) + " мсек.";
		
	КонецЕсли;
	
	Возврат ВремяТекст;
	
КонецФункции // ПолучитьПредставлениеВремени()
// Внимание, если у вас старая платформа и не поддерживает  метод "СтрокаСЧислом" закоментируйте строки и раскоментируйте строки над ними
Назад к списку

Комментарии

TurboConf

Удобный поиск шаблонов кода

прямо в Конфигураторе

Узнать подробнее