Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
17 апр 2024, 02:51

Функция получения даты из строки

Автор MuI_I_Ika, 26 авг 2015, 14:33

0 Пользователей и 1 гость просматривают эту тему.

MuI_I_Ika

Может преобразовать строки вида: "01/10/15","01-10-2015","10,15","10.15","01.03.2015 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));
Стр = Сред(Стр,Поз + ДлинаРазделителя);

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

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

Теги:

Похожие темы (1)

Рейтинг@Mail.ru

Поиск