Строку в дату по форматной строке Код 1C v 8.х



// Процедура СтрокаВДату преобразует строку в дату по шаблону форматной строки

//

// Параметры

// Строка - строка, содержащая дату,

// ФорматДаты - форматная строка вида:

// [dd MM yy]

// [yy-MM-dd HH:mm]

// [dd MM yy HH mm ss]

// [dd MM yyyy]

// [MM dd, yyyy, HH:mm]

// [dd.MM.yy]

// [MM, dd, yyyy]

// [yyyyMMdd]

// [HH-mm-ss, dd-MM-yy]

// [dd]

// [dd MM HH:mm:ss yyyy]

// [HH:mm:ss]

// [HH:mm]

// [yyyy-MM-dd HH:mm:ss]

// [yyyy-MM-dd]

// [yyyy/MM/dd]

// [dd/MM/yy]

// [MM dd yyyy]

// [yyyy-MM]

// [yyyy]

// [MM, dd, yyyy]

// [dd-MM-yyyy]

// [ddMMyyyy]

//

Функция СтрокаВДату(Знач Строка, Знач ФорматДаты) Экспорт

Ч = Новый Соответствие;

Для ё = 1 По СтрДлина(ФорматДаты) + 6 Цикл

Ч[Сред(ФорматДаты + "dMyHms", ё, 1)] = 0

КонецЦикла;

Для ё = 1 По СтрДлина(ФорматДаты) Цикл

Ч[Сред(ФорматДаты, ё, 1)] = 10 * Ч[Сред(ФорматДаты, ё, 1)] + Найти("123456789", Сред(Строка, ё, 1));

КонецЦикла;

Ч["y"] = Ч["y"] + ?(0 < Ч["y"] И Ч["y"] < 50, 2000, ?(0 < Ч["y"] И Ч["y"] < 100, 1900, 0));

Возврат Дата(Макс(Ч["y"], 1), Макс(Ч["M"],1), Макс(Ч["d"],1), Ч["H"], Ч["m"], Ч["s"]);

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






✍️ @odin1C_rus