Преобразование строки в дату в 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 1 02.06.22 20:32 Сейчас в теме
// Перевод Даты в Строку и Обратно
//ТекущаяДата() - 28.02.2010 23:58:59

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


//Переведем строку в дату
ТекДата = Дата(СтрокаДата); // Получаем:  28.02.2010 23:58:59
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот