Преобразование строки в дату по форматной строке
Источник: http://infostart.ru/public/200111/
Функция СтрокаВДату(ФорматДаты, Дано, Ошибка = Ложь)
Попытка
ТестоваяДата = Формат('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';
КонецПопытки;
КонецФункции
{5} Переменной ТестоваяДата присвоено значение, но оно нигде не используется
Функция для превращения строки в дату по форматной строке
Получить дату из строки формата YYYY-MM-DDThh:mm:ss ISO 8601