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

markers 52 3 2

Функцию удобно использовать для всяких обработок, чтобы получать время выполнения в наглядном виде. Поддерживает разницу дат в милисекундах (но не отлажено полностью эта функция)

// Возвращает представление прошедшего времени
//
// Параметры:
//  РазницаВремени  - Число - Высчитанная разница времени в секундах/милисекундах
//	ВремяВМилисекундах - Булево - Время передано в милисекундах
//
// Возвращаемое значение:
//   Строка   - Представление разницы времени
//
Функция ПолучитьПредставлениеВремени(РазницаВремени, ВремяВМилисекундах = Ложь) Экспорт
	
	РазмерЧаса = 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, " и ", "") + Строка(Милисекунд) + " мсек.";
		ВремяТекст = ВремяТекст + Строка(Милисекунд) + " мсек.";
		
	КонецЕсли;
	
	Возврат ВремяТекст;
	
КонецФункции // ПолучитьПредставлениеВремени()
// Внимание, если у вас старая платформа и не поддерживает  метод "СтрокаСЧислом" закоментируйте строки и раскоментируйте строки над ними
0
Орфографическая ошибка в милисекундах (найдено 3): милисекундах
Орфографическая ошибка в ВремяВМилисекундах (найдено 4): Милисекундах
Орфографическая ошибка в Милисекунд (найдено 7): Милисекунд
Орфографическая ошибка в закоментируйте: закоментируйте
Орфографическая ошибка в раскоментируйте: раскоментируйте

См. также

Получить разницу дат в [секундах, минутах, днях, ...]

ПолучитьПредставлениеТелефона (БСП)

ПредставлениеВремени (БСП)

ПолучитьВременныйПароль (БСП)

ПолучитьПредставлениеАдресата (БСП)

ПолучитьНастройкиПолученияВременныхПаролей (БСП)

ПолучитьПредставленияПолучателейВходящегоПисьма (БСП)

ПолучитьСтроковоеПредставлениеРазмераФайла (БСП)

ПолучитьИнтервалВремениИзСтроки (БСП)

Модератору