СтрокаВДату

// Автор: Сергей (ildarovich, http://infostart.ru/profile/28527/)
Функция СтрокаВДату(Знач ФорматДаты, Знач СтрокаСДатойОшибка = Ложь) Экспорт

Попытка
тест Формат(‘00010101’«ДФ=» ФорматДаты// — проверка корректности параметра ФорматДата
Исключение
Ошибка = Истина;
Возврат 
‘00010101’
КонецПопытки;

составДаты = Новый Соответствие;                                                                                                        // — части даты
Для Инд По СтрДлина(ФорматДаты) + Цикл
составДаты[Сред(ФорматДаты «dMyHhms»Инд1)] = 0                                                                                // — инициализация частей даты
КонецЦикла;

Для Инд По 12 Цикл
СтрокаСДатой СтрЗаменить(СтрокаСДатойФормат(Дата(1Инд1), «ДФ=MMММ»), Формат(Инд«ЧЦ=4; ЧВН=»));                            // — замена названий месяцев числами
СтрокаСДатой СтрЗаменить(СтрокаСДатойФормат(Дата(1Инд1), «ДФ=MMМ» ), Формат(Инд«ЧЦ=3; ЧВН=»))
КонецЦикла;

Для Инд По СтрДлина(ФорматДаты) Цикл
составДаты[Сред(ФорматДатыИнд1)] = 10 составДаты[Сред(ФорматДатыИнд1)] + Найти(«123456789»Сред(СтрокаСДатойИнд1));  // — накопление частей даты
Ошибка Ошибка ИЛИ Найти(«dMyHhms»Сред(ФорматДатыИнд1)) И НЕ Найти(«0123456789»Сред(СтрокаСДатойИнд1))                 // — необязательная проверка на цифры
КонецЦикла;

составДаты[«y»] = составДаты[«y»] + ?(составДаты[«y»] < 502000, ?(составДаты[«y»] < 10019000));                                   // — дополнение двух цифр года до четырех
Попытка
Возврат 
Дата(составДаты[«y»], составДаты[«M»], составДаты[«d»], составДаты[«H»] + составДаты[«h»], составДаты[«m»], составДаты[«s»])
Исключение
Ошибка = Истина;
Возврат 
‘00010101’
КонецПопытки

КонецФункции // СтрокаВДату

Добавить комментарий

Ваш e-mail не будет опубликован.

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.