Каталог решений - Функция преобразования СТРОКИ в ДАТУ

Функция преобразования СТРОКИ в ДАТУ

Функция преобразования СТРОКИ в ДАТУ

В наличии

Функция преобразование всяких вариантов строк в дату. Искал, но не нашел на сайте.
Преобразовывает СТРОКИ вида "01/10/13","01-10-2013","10,13","10.13","01.03.2013 0:00:00" к типу ДАТА
Может, кому пригодится.
В обработке используется стандартная функция разложить строку, указываю ее ниже.

Категория:

Описание

	 ФункцияПолучитьДатуИзСтроки(Стр) 

	     Д = Дата("00010101000000");

	     ЕслиПустаяСтрока(Стр) Тогда
	         Возврат Д;
	     КонецЕсли;

	     ЕслиНайти(Стр,".") > 0 Тогда

	         Если Найти(Стр,":") > 0 И Найти(Стр," ") > 0 Тогда 
	             М = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(Стр," ");
	             ВозвратПолучитьДатуИзСтроки(М[0]);
	         КонецЕсли;

	         М = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(Стр,".");

	     ИначеЕсли Найти(Стр,"/")>0 Тогда

	         М = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(Стр,"/");

	     ИначеЕсли Найти(Стр,",")>0 Тогда

	         М = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(Стр,",");

	     ИначеЕсли Найти(Стр,"-")>0 Тогда

	         М = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(Стр,"-");

	     КонецЕсли; 

	     Попытка

	         Если М.Количество() = 3 Тогда //"01.02.13" или "01.02.2013"
	             Год = ?(СтрДлина(М[2]) = 2,2000 + М[2],М[2]);
	             Д = Дата(Год,М[1],М[0]);
	         ИначеЕсли М.Количество() = 2 Тогда //"02.13" или "02.2013";
	             Год = ?(СтрДлина(М[1]) = 2,2000 + М[1],М[1]);
	             Д = Дата(Год,М[0],1);
	         КонецЕсли;

	     Исключение
	     КонецПопытки; 

	     ВозвратД; 

	 КонецФункции

	 // Функция "расщепляет" строку на подстроки, используя заданный
	 //        разделитель. Разделитель может иметь любую длину.
	 //        Если в качестве разделителя задан пробел, рядом стоящие пробелы
	 //        считаются одним разделителем, а ведущие и хвостовые пробелы параметра Стр
	 //        игнорируются.
	 //        Например,
	 //        РазложитьСтрокуВМассивПодстрок(",ку,,,му", ",") возвратит массив значений из пяти элементов,
	 //        три из которых - пустые строки, а
	 //        РазложитьСтрокуВМассивПодстрок(" ку   му", " ") возвратит массив значений из двух элементов
	 //
	 //    Параметры:
	 //        Стр -  строка, которую необходимо разложить на подстроки.
	 //                        Параметр передается по значению.
	 //        Разделитель -     строка-разделитель, поумолчанию - запятая.
	 //
	 //
	 //    Возвращаемое значение:
	 //        массив значений, элементы которого - подстроки
	 //

	 ФункцияРазложитьСтрокуВМассивПодстрок(ЗначСтр, Разделитель = ",") Экспорт

	     МассивСтрок = НовыйМассив();

	     ЕслиРазделитель = " " Тогда

	         Стр = СокрЛП(Стр);

	         Пока Истина Цикл

	             Поз = Найти(Стр,Разделитель);

	             Если Поз = 0 Тогда
	                 МассивСтрок.Добавить(Стр);
	                 Возврат МассивСтрок;
	             КонецЕсли;

	             МассивСтрок.Добавить(Лев(Стр,Поз - 1));
	             Стр = СокрЛ(Сред(Стр,Поз));

	         КонецЦикла;

	     Иначе

	         ДлинаРазделителя = СтрДлина(Разделитель);

	         Пока Истина Цикл

	             Поз = Найти(Стр,Разделитель);

	             Если Поз = 0 Тогда
	                 МассивСтрок.Добавить(Стр);
	                 Возврат МассивСтрок;
	             КонецЕсли;

	             МассивСтрок.Добавить(Лев(Стр,Поз - 1));
	             Стр = Сред(Стр,Поз + ДлинаРазделителя);

	         КонецЦикла;
	     КонецЕсли;

	 КонецФункции
has been added to your cart:
Оформление заказа