Преобразование строки в дату 1С 8.2
В версии 8.3 уже заложен функционал, который преобразует строку любого формата в дату, но в 8.2 имеется ряд ограничений. В статье я приведу функцию для 1с 8.2, которая выполняет преобразование строки в дату и/или время
Функция ПреобразоватьВДату ( ИсхСтр )
Стр = СокрЛП ( ИсхСтр ) ;
ЭтоДата = Найти ( Стр , «.» ) или Найти ( Стр , «-» ) или Найти ( Стр , «/» ) ;
ЭтоВремя = Найти ( Стр , «:» ) ;
Если Не ЭтоДата и Не ЭтоВремя Тогда
Возврат Дата ( 1 , 1 , 1 , 1 , 1 , 1 ) ;
МассивДат = Новый Массив ;
МассивВремен и = Новый Массив ;
Для а = 1 По СтрДлина ( Стр ) Цикл
Если ( Сред ( Стр , а , 1 ) = «.» или Сред ( Стр , а , 1 ) = «-» или Сред ( Стр , а , 1 ) = «/» ) и ЭтоДата Тогда
МассивДат . Добавить ( Число ( врСтр ) ) ;
ИначеЕсли Сред ( Стр , а , 1 ) = «:» и Не ЭтоДата Тогда
МассивВремени . Добавить ( Число ( врСтр ) ) ;
ИначеЕсли Сред ( Стр , а , 1 ) = » » или КодСимвола ( Сред ( Стр , а , 1 ) ) < 48 или КодСимвола ( Сред ( Стр , а , 1 ) ) >57 Тогда
Если МассивДат . Количество ( ) > 0 и МассивДат . Количество ( ) < 3 и врСтр <>«» Тогда
МассивДат . Добавить ( Число ( врСтр ) ) ;
ЭтоДата = Ложь;
врСтр = врСтр + Сред ( Стр , а , 1 ) ;
КонецЦикла;
Если МассивВремени . Количество ( ) > 0 и МассивВремени . Количество ( ) < 3 и врСтр <>«» Тогда
МассивВремени . Добавить ( Число ( врСтр ) ) ;
ИначеЕсли МассивДат . Количество ( ) > 0 и МассивДат . Количество ( ) < 3 и врСтр <>«» Тогда
МассивДат . Добавить ( Число ( врСтр ) ) ;
врМесяц = 0 ;
Для Каждого дСтр из МассивДат Цикл
Если врДень <> 0 и врМесяц <> 0 Тогда
врГод = дСтр ;
ИначеЕсли врГод <> 0 и врМесяц <> 0 Тогда
врДень = дСтр ;
ИначеЕсли врГод <> 0 или врДень <> 0 Тогда
врМесяц = дСтр ;
Если дСтр/ 100 > 1 Тогда
врГод = дСтр ;
Если врГод = 0 и врДень = 0 Тогда
врДень = дСтр ;
КонецЦикла;
Для Каждого вСтр из МассивВремен и Цикл
Если врЧас = 0 Тогда
врЧас = вСтр ;
ИначеЕсли врМин = 0 Тогда
врМин = вСтр ;
ИначеЕсли врСек = 0 Тогда
врСек = вСтр ;
КонецЦикла;
Если врГод = 0 или врГод > 9999 Тогда
ИначеЕсли врГод/ 100 < 1 Тогда
врГод = врГод + 2000 ;
Если врМесяц = 0 или врМесяц > 12 Тогда
врМесяц = 1 ;
Если врДень = 0 или врДень > 31 Тогда
Если врЧас > 23 Тогда
Если врМин > 59 Тогда
Если врСек > 59 Тогда
Возврат Дата ( врГод , врМесяц , врДень , врЧас , врМин , врСек ) ;
КонецФункции
Функцию можно вызывать и в купе с методом АвтоПодборТекста. Она различает почти все возможные форматы записи даты и времени.
2 комментария
[…] к своей же статье я сделал эти две замечательные функции. Вот […]
В языке запросов отсутствуют встроенные функции преобразования одних типов данных в другие, например, строк в числа или даты и наоборот. В работе Выразить строку как число и строку как дату в запросе были предложены достаточно компактные способы преобразований из строки . Теперь дошла очередь до обратных к ним преобразований в строку .
Добавить комментарий Отменить ответ
Рубрики
Свежие записи
- Запуск 1С от имени другого пользователя
- Имитация sql выражения LIMIT в запросе 1С
- Fail2ban сошел с ума
- Значение swap на VDS серверах
- 1C: Универсальный парсер
Свежие комментарии
- Сережа к записи Обмен 1с и opencart 2.0
- Елена к записи Защищаем Contact form 7 от спама
- Сергей к записи Отчет «ДвиженияДокумента» для своего документа
- Сергей к записи Отчет «ДвиженияДокумента» для своего документа
- Дмитрий к записи Защищаем Contact form 7 от спама
© 2023 Я программист. Построено на WordPress и теме Mesmerize
Преобразование строки в дату.
Для преобразования текст ячейки табличного документа в дату используется один из двух вариантов функции преобразования значений :
- Вариант 1 – по составляющим :Дата(, , , , , )
- Вариант 2 – по строке – Дата( ), , где Строка должна содержать дату в локальном формате даты или в каноническом виде YYYYMMDDHHMMSS.
Однако, не написано в документации какой из вариантов предпочтительнее. Я всегда пользуюсь процедуру из общего модуля библиотеки стандартных подсистем, которая преобразует исходную строку ячейки в дату. :
Дата = СтроковыеФункцииКлиентСервер.СтрокаВДату(Значение );
где Значение – это строка, которую необходимо привести к дате. Формат даты должен быть в виде “ДД.ММ.ГГГГ” или “ДД/ММ/ГГ” или “ДД-ММ-ГГ”, Например, “23.02.1980” или “23/02/80”.
Функция СтрокаВДату(Знач Значение) ЭкспортЗначение = СтрЗаменить(Значение, " ", "");Значение = СокрЛП(СтрЗаменить(Значение, ".", ""));Значение = СокрЛП(СтрЗаменить(Значение, "/", ""));Значение = СокрЛП(СтрЗаменить(Значение, "-", ""));Значение = Сред(Значение, 5) + Сред(Значение, 3, 2) + Лев(Значение, 2);Если СтрДлина(Значение) = 6 ТогдаГод = СтрокаВЧисло(Лев(Значение, 2));Если Год = Неопределено ТогдаВозврат Дата('0001.01.01');КонецЕсли;Значение = ?(Год > 29, "19", "20") + Значение;КонецЕсли;ОписаниеТипа = Новый ОписаниеТипов("Дата");Результат = ОписаниеТипа.ПривестиЗначение(Значение);Возврат Результат;КонецФункции См. также
- Разложить Строку В Массив Слов
- Добавление нулей слева или справа от номера
- Извлечь Текст Из HTML
- Является ли строка уникальным идентификатором
Поделиться ссылкой:
- Нажмите, чтобы поделиться на Twitter (Открывается в новом окне)
- Нажмите, чтобы открыть на Facebook (Открывается в новом окне)
Как преобразовать строку в дату 1с
Есть строка с такими данными:»0001-01-01T12:34:12″, как ее преобразовать так чтоб было 00010101123412 ну или полноценно в тип «Дата».
(0) Убрать всё лишнее и преобразовать.
ВходнойПараметр = «0001-01-01T12:34:12»
ВходнойПараметр = СтрЗаменить(ВходнойПараметр,»-«,»»);
ВходнойПараметр = СтрЗаменить(ВходнойПараметр,»:»,»»);
ВходнойПараметр = СтрЗаменить(ВходнойПараметр,»T»,»»);
НашаДата = Дата(ВходнойПараметр)
ПрочитатьДатуJSON(«0001-01-01T12:34:12», ФорматДатыJSON.ISO)
Формат(xmlЗначение(тип(«дата»), «0001-01-01T12:34:12″),»ДЛФ=DDT»)
ЗначениеXML(Тип(«Дата»),»0001-01-01T12:34:12″)
Для й = 1 По СтрДлина(НашаСтрока) Цикл
Символ = Сред(НашаСтрока, й, 1);
Если ЭтоЦифра(Символ) Тогда
ВыходнаяСтрока = ВыходнаяСтрока + Символ;
КонецЕсли;
КонецЦикла;
Функция ЭтоЦифра(Символ)
КодСимвола = КодСимвола(Символ);
Возврат (КодСимвола >= 48 И КодСимвола КонецФункции
(6) — самый верный вариант!
Получится дата.
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой
Преобразовать строку в дату — 1С — Обсуждение 1835075
Как можно преобразовать строку вида «06 декабря 2017г.» в дату?
Добрый день. Как можно преобразовать строку вида "06 декабря 2017г." в дату ? Проще всего.
Преобразовать строку в дату
Помогите пожалуйста не могу сделать, как преобразовать время в строку,работаю c Excel, надо.
Преобразовать строку в дату
Как преобразовать строку типа "Ср Май 23 10:41:51 2018" в дату? new Date(‘Ср Май 23 10:41:51.
Преобразовать строку в дату
Есть строка s=’2019-03-08 05:19:29.826600+03′ нужно преобразовать в дату, не могу выбрать.

Преобразовать дату в строку
Ребят нужно числовую дату преоразовать в строку. Например 10.08.2015 в 10.августа.2015 C++.
Как преобразовать дату в строку?
procedure TForm1.linkgenClick(Sender: TObject); var tviLink:string; mydate:TDate; .
Преобразовать 6-ти символьную строку в дату
всем привет, задача, есть строка 6 символов.типа 010115 — означает первой января 2015 года. нужно.