|
3
azernot
19.04.17
✎
17:31
|
// Получение значения типа "Дата" из строки по формату шаблона
//
// Параметры
// <Строка> – <Строка> – строка содержащая значения литералов даты
// (Например "03.07.1979 09:30:59")
// <Шаблон> – <Строка> – Строка содержащая шаблон даты
// (Например "ДД.ММ.ГГГГ ЧЧ:ММ:СС")
// <Режим> - <Строка> –режим возвращаемого значения:
//
// Возвращаемое значение:
// <Дата> – в случае Режим = "Дата"
// <Строка> - в случае Режим = "Строка" (формат строки: ГГГГММДДччммсс)
Функция ИзСтрокиВДату(Строка, Шаблон = "ДД.ММ.ГГГГ", Режим = "Дата") Экспорт
Если НЕ ЗначениеЗаполнено(Строка) ТОгда
Возврат Дата("00010101");
КонецЕсли;
Попытка
//Получим строковые значения литералов
Год = Сред(Строка, Найти(Шаблон, "ГГГГ"),4);
Если Число(СокрЛП(Год)) <30 Тогда
Год = "20"+Строка(Формат(Число(СокрЛП(Год)), "ЧЦ=2; ЧН=00; ЧВН=; ЧГ="));
ИначеЕсли Число(СокрЛП(Год)) <100 Тогда
Год = "19"+Строка(Формат(Число(СокрЛП(Год)), "ЧЦ=2; ЧН=00; ЧВН=; ЧГ="));
КонецЕсли;
Месяц = Сред(Строка, Найти(Шаблон, "ММ"),2);
День = Сред(Строка, Найти(Шаблон, "ДД"),2);
ЕстьЧасы = Найти(Шаблон,"чч");
Если ЕстьЧасы>0 Тогда
Час = Сред(Строка,ЕстьЧасы,2);
Иначе
Час = "0";
КонецЕсли;
ЕстьМинуты = Найти(Шаблон,"мм");
Если ЕстьМинуты>0 Тогда
Минута = Сред(Строка,ЕстьМинуты,2);
Иначе
Минута = "0";
КонецЕсли;
ЕстьСекунды = Найти(Шаблон,"сс");
Если ЕстьСекунды>0 Тогда
Секунда = Сред(Строка,ЕстьСекунды,2);
Иначе
Секунда = "0";
КонецЕсли;
Год = Строка(Формат(Число(СокрЛП(Год)), "ЧЦ=4; ЧН=2000; ЧВН=; ЧГ="));
Месяц = Строка(Формат(Число(СокрЛП(Месяц)), "ЧЦ=2; ЧН=01; ЧВН=; ЧГ="));
День = Строка(Формат(Число(СокрЛП(День)), "ЧЦ=2; ЧН=01; ЧВН=; ЧГ="));
Час = Строка(Формат(Число(СокрЛП(Час)), "ЧЦ=2; ЧН=00; ЧВН=; ЧГ="));
Минута = Строка(Формат(Число(СокрЛП(Минута)), "ЧЦ=2; ЧН=00; ЧВН=; ЧГ="));
Секунда = Строка(Формат(Число(СокрЛП(Секунда)), "ЧЦ=2; ЧН=00; ЧВН=; ЧГ="));
Если Режим = "Дата" Тогда
Возврат Дата(Год+Месяц+День+Час+Минута+Секунда);
ИначеЕсли Режим = "Строка" Тогда
Возврат Год+Месяц+День+Час+Минута+Секунда;
Иначе
Стр = Режим;
Стр = СтрЗаменить(Стр,"ГГГГ",Год);
Стр = СтрЗаменить(Стр,"ММ",Месяц);
Стр = СтрЗаменить(Стр,"ДД",День);
Стр = СтрЗаменить(Стр,"чч",Час);
Стр = СтрЗаменить(Стр,"мм",Минута);
Стр = СтрЗаменить(Стр,"сс",Секунда);
Возврат Стр;
КонецЕсли;
Исключение
Возврат Дата("00010101");
КонецПопытки;
КонецФункции // ИзСтрокиВДату()
|
|