// Автор: Сергей (ildarovich, http://infostart.ru/profile/28527/)
Функция СтрокаВДату(Знач ФорматДаты, Знач СтрокаСДатой, Ошибка = Ложь) Экспорт
Попытка
тест = Формат(‘00010101’, «ДФ=» + ФорматДаты) // — проверка корректности параметра ФорматДата
Исключение
Ошибка = Истина;
Возврат ‘00010101’
КонецПопытки;
составДаты = Новый Соответствие; // — части даты
Для Инд = 1 По СтрДлина(ФорматДаты) + 7 Цикл
составДаты[Сред(ФорматДаты + «dMyHhms», Инд, 1)] = 0 // — инициализация частей даты
КонецЦикла;
Для Инд = 1 По 12 Цикл
СтрокаСДатой = СтрЗаменить(СтрокаСДатой, Формат(Дата(1, Инд, 1), «ДФ=MMММ»), Формат(Инд, «ЧЦ=4; ЧВН=»)); // — замена названий месяцев числами
СтрокаСДатой = СтрЗаменить(СтрокаСДатой, Формат(Дата(1, Инд, 1), «ДФ=MMМ» ), Формат(Инд, «ЧЦ=3; ЧВН=»))
КонецЦикла;
Для Инд = 1 По СтрДлина(ФорматДаты) Цикл
составДаты[Сред(ФорматДаты, Инд, 1)] = 10 * составДаты[Сред(ФорматДаты, Инд, 1)] + Найти(«123456789», Сред(СтрокаСДатой, Инд, 1)); // — накопление частей даты
Ошибка = Ошибка ИЛИ Найти(«dMyHhms», Сред(ФорматДаты, Инд, 1)) И НЕ Найти(«0123456789», Сред(СтрокаСДатой, Инд, 1)) // — необязательная проверка на цифры
КонецЦикла;
составДаты[«y»] = составДаты[«y»] + ?(составДаты[«y»] < 50, 2000, ?(составДаты[«y»] < 100, 1900, 0)); // — дополнение двух цифр года до четырех
Попытка
Возврат Дата(составДаты[«y»], составДаты[«M»], составДаты[«d»], составДаты[«H»] + составДаты[«h»], составДаты[«m»], составДаты[«s»])
Исключение
Ошибка = Истина;
Возврат ‘00010101’
КонецПопытки
КонецФункции // СтрокаВДату