HelpF.pro

Функция переводит Дату в формате 1С в формат вида 'YYYYMMDD hh:mm:ss' и обратно

Код 1C v 8.х
 // Функция переводит дату в формате 1С в международный текстовый формат вида 'YYYYMMDD hh:mm:ss'
// Параметры: Дата1С - Дата - Дата в формате 1С
// Возвращаемое значение: Строка - Дата в международном текстовом формате
//
Функция ДатаВСтроку(Дата1С)
Результат = Формат(Год(Дата1С),"ЧГ=0") + ?(СтрДлина(Строка(Месяц(Дата1С))) < 2,"0" + Строка(Месяц(Дата1С)) , Строка(Месяц(Дата1С)))
+ ?(СтрДлина(Строка(День(Дата1С))) < 2, "0" + Строка(День(Дата1С)), Строка(День(Дата1С))) + " "
+ ?(СтрДлина(Строка(Час(Дата1С))) < 2, "0" + Строка(Час(Дата1С)), Строка(Час(Дата1С))) + ":"
+ ?(СтрДлина(Строка(Минута(Дата1С))) < 2, "0" + Строка(Минута(Дата1С)), Строка(Минута(Дата1С))) + ":"
+ ?(СтрДлина(Строка(Секунда(Дата1С))) <2, "0" + Строка(Секунда(Дата1С)), Строка(Секунда(Дата1С)));
Возврат Результат;
КонецФункции

// Функция переводит строку в дату с указанным форматом
// Параметры:
// Строка - Строка - Дата в виде строки
// ФорматДаты - Строка - Формат даты, в который переводится строка
// Возвращаемое значение: Дата - Дата в указанном формате
//
Функция ПривестиСтрокуКДате(Строка, ФорматДаты="дмг")
Список = Новый Массив;

Подстрока = "";
Позиция = 1;
ДлинаСтроки = СтрДлина(Строка) + 1;

Пока Позиция <= ДлинаСтроки цикл
Символ = Сред(Строка, Позиция, 1);
Если (Символ >= "0") И (Символ <= "9") тогда
Подстрока = Подстрока + Символ;
ИначеЕсли Подстрока <> "" тогда
Список.Добавить(Число(Подстрока));
Подстрока = "";
КонецЕсли;
Позиция = Позиция + 1;
КонецЦикла;

Если Список.Количество() < 3 тогда
Возврат Неопределено;
КонецЕсли;

Если ФорматДаты="дмг" тогда
День = Список[0]; Месяц = Список[1]; Год = Список[2];
ИначеЕсли ФорматДаты="мдг" тогда
День = Список[1]; Месяц = Список[0]; Год = Список[2];
ИначеЕсли ФорматДаты="гмд" тогда
День = Список[2]; Месяц = Список[1]; Год = Список[0];
Иначе
День = 1; Месяц = 1; Год = 1;
КонецЕсли;

Час = 0; Минута = 0; Секунда = 0;
Если Список.Количество() >= 5 тогда
Час = Список[3];
Минута = Список[4];
Секунда = ?(Список.Количество() >= 6, Список[5], 0);
КонецЕсли;

Попытка
Результат = Дата(Год, Месяц, День, Час, Минута, Секунда);
Исключение
Возврат Неопределено;
КонецПопытки;

Возврат Результат;

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

Опубликовано на сайте: https://HelpF.pro
Прямая ссылка: https://HelpF.pro/faq8/view/942.html