- В этой теме 1 ответ, 2 участника, последнее обновление 23 часа, 1 минута назад сделано .
Просмотр 1 ветки ответов
Просмотр 1 ветки ответов
- Для ответа в этой теме необходимо авторизоваться.
Программирование и администрирование в 1С
База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как написать функцию преобразования строки в дату на 1С (BSL)?
Напиши функцию преобразования значения строки в дату
Вот простая и универсальная функция на 1С (BSL), которая преобразует строку в дату. Она учитывает формат «дд.мм.гггг» и похожие, а также умеет работать с разными разделителями:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
Функция ПреобразоватьСтрокуВДату(СтрокаДата) Если ПустаяСтрока(СтрокаДата) Тогда Возврат Неопределено; КонецЕсли; // Заменяем разные разделители на точку СтрокаДата = СтрЗаменить(СтрокаДата, "/", "."); СтрокаДата = СтрЗаменить(СтрокаДата, "-", "."); СтрокаДата = СтрЗаменить(СтрокаДата, "", "."); СтрокаДата = СтрЗаменить(СтрокаДата, " ", ""); // Проверяем длину строки, чтобы избежать ошибок Если СтрДлина(СтрокаДата) < 8 Тогда Возврат Неопределено; КонецЕсли; // Разбираем дату по частям День = Число(Лев(СтрокаДата, 2)); Месяц = Число(Сред(СтрокаДата, 4, 2)); Год = Число(Прав(СтрокаДата, 4)); // Проверка корректности даты Если День < 1 Или День > 31 Тогда Возврат Неопределено; КонецЕсли; Если Месяц < 1 Или Месяц > 12 Тогда Возврат Неопределено; КонецЕсли; Если Год < 1900 Тогда Возврат Неопределено; КонецЕсли; Возврат Дата(Год, Месяц, День); КонецФункции |
Пример использования:
|
1 2 |
Дата = ПреобразоватьСтрокуВДату("31.12.2025"); Сообщить(Формат(Дата, "ДФ=dd.MM.yyyy")); // Выведет 31.12.2025 |
Если нужна более универсальная функция, которая умеет парсить разные форматы, могу дать расширенный вариант. Но для большинства случаев этого достаточно.