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

Автор: 1С
ОбщийМодуль.НапоминанияПользователяКлиентСервер
БСП

Получить интервал времени из строки. Получает из текстового описания интервал времени в секундах.

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

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

Рекомендации

Похожие публикации

ИнтервалВремениСтрокой (БСП)

ОформитьВремя (БСП)

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

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

Создать временную таблицу периодов с заданной периодичностью

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

Пересекаются ли два интервала

Обновлятор-1С: групповое (пакетное) обновление и обслуживание всех баз за один раз