Преобразование строки в дату в 12-часовом формате

1. Natuseeq 25.04.22 12:00 Сейчас в теме
Добрый день! Возникла потребность преобразовать строку в дату в 12-часовом формате.
Строка "20220425110000AM" //25.04.2022 11:00:00 AM//
Так как я не нашла возможности преобразовать с помощью стандартной функции Дата(Строка) прошу помощи у опытных специалистов.
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
3. spacecraft 25.04.22 13:09 Сейчас в теме
(1) как вариант:
ЧДаты = Лев(СтрДата, 14);
АДаты = Прав(СтрДата, 2);
Результат = Дата(ЧДаты);
ЧасДаты = Час(Результат);
Если ВРег(АДаты) = "PM" И ЧасДаты < 12 Тогда
	Результат = Результат + 12*3600;
ИначеЕсли ВРег(АДаты) = "AM" И ЧасДаты = 12 Тогда
	Результат = Результат - 12*3600;
КонецЕсли;
Показать
PlatonStepan; user1671936; +2 Ответить
7. PlatonStepan 38 03.06.22 05:05 Сейчас в теме
Проверять результат можно следующим образом:

Если СтрДата <> Формат(Результат, "ДФ='yyyyMMddhhmmsstt'") Тогда
	ВызватьИсключение "Даты не равны после преобразования!";
КонецЕсли;
2. Stref75 25.04.22 12:19 Сейчас в теме
(1) если строка всегда приходит именно в этом виде то можно так

пусть
ДатаСтрока = "20220425110000AM";


вариант 1 - разобрать на составляющие и передать в Дата()

Год = Число(Лев(ДатаСтрока,4);
Месяц = Число(Сред(ДатаСтрока,5, 2));
День = Число(Сред(ДатаСтрока, 7, 2));
Час = Число(Сред(ДатаСтрока, 9, 2))+?(Прав(ДатаСтрока, 2)="АМ", 0, 12);
Минута
Секунад - по аналоги
ДатаИзСтроки = Дата(Год, Месяц, День, Час, Минута, Секунда);


вариант 2 - в исходной строке отрезать АМ или РМ и в зависимости от них перезаполнить символы отвечающие за часы и полученную строку передать в Дата()
4. spacecraft 25.04.22 13:14 Сейчас в теме
(2)
Час = Число(Сред(ДатаСтрока, 9, 2))+?(Прав(ДатаСтрока, 2)="АМ", 0, 12);

Тут не так все просто. Нужно учитывать, что 12АМ это 0 часов, а 12PM это 12 часов.
5. Stref75 25.04.22 13:52 Сейчас в теме
(4) да есть такое. но в принципе + пара строк кода
6. olga10121982 02.06.22 20:32 Сейчас в теме
// Перевод Даты в Строку и Обратно
//ТекущаяДата() - 28.02.2010 23:58:59

//Переведем текущую дату в строку
СтрокаДата = Формат(ТекущаяДата(), "ггггММддЧЧммсс");  // Получаем:  20100228235859


//Переведем строку в дату
ТекДата = Дата(СтрокаДата); // Получаем:  28.02.2010 23:58:59
Оставьте свое сообщение
Вакансии
Консультант 1С
Москва
зарплата от 80 000 руб. до 150 000 руб.
Полный день

Программист 1С (ERP, УХ, КА 2, УТ 11), удаленно
Москва
зарплата от 160 000 руб.
Полный день

Аналитик 1С
Москва
зарплата от 200 000 руб.
Полный день

Консультант 1С / Специалист поддержки 1C
Екатеринбург
зарплата от 70 000 руб.
Полный день

Технический архитектор 1С
Екатеринбург
зарплата от 200 000 руб.
Полный день