Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
28 сен 2024, 11:19

Домашка на операции с временем

Автор VGreen, 30 авг 2024, 11:45

0 Пользователей и 1 гость просматривают эту тему.

VGreen

Всем привет! Задача с курсов для начинающих с "Ноля" поставила меня в тупик.
Задача: На вход мы получаем время окончания урока и текущее время, надо посчитать время до конца занятия не прибегая к делению. Вывод в часах и минутах.
Я задачу худо-бедно решил, но вот в чем проблема. Курс для новичков, и условных операторов пока еще не было, значит по логике курса я их знать не должен. Соответственно есть опасение, что автором задачи был придуман красивый и лаконичный вариант ее решения не прибегая к ветвлениям, который я не вижу в силу собственного несовершенства. ПАМАГИТЕ!

В своем решении я делал ветвление для проверки смогу ли я вычесть текущие минуты из минут окончания без отрицательного остатка. Выглядит оно так:

      ТекущееВремя = '2022.04.07 11:30:00';
      ВремяЗавершенияЗанятия = '2022.04.07 15:15:00';
      
      ТекущийЧас = Час(ТекущееВремя);
      ТекущаяМинута = Минута(ТекущееВремя);
      
      ЗавершенияЧас = Час(ВремяЗавершенияЗанятия);
      ЗавершенияМинута = Минута(ВремяЗавершенияЗанятия);
      
      Если ТекущаяМинута > ЗавершенияМинута Тогда
         ЗавершенияЧас = ЗавершенияЧас - 1;
         ЗавершенияМинута = ЗавершенияМинута + 60;
      КонецЕсли;
      
      ОстатокЧасов = ЗавершенияЧас - ТекущийЧас;
      ОстатокМинут = ЗавершенияМинута - ТекущаяМинута;
      
      Сообщить(СтрШаблон("До конца занятия: %1ч. %2мин.", ОстатокЧасов, ОстатокМинут));

LexaK

VGreen, что бы получить часы и минуты без деления, можно использовать функцию Формат(...)
пример
ТекущееВремя = '2022.04.07 11:30:00';
ВремяЗавершенияЗанятия = '2022.04.07 15:15:00';

лкВремя = Формат(НачалоДня(ТекущееВремя) + (ВремяЗавершенияЗанятия - ТекущееВремя),
"ДФ=чч.мм.сс");
сообщить("До конца урока осталлось: " + лкВремя);             
если помогло нажмите: Спасибо!

VGreen

Спасибо, отличная функция! Не сообразил, что можно секунды от вычитания прибавить к дате с нулевым часом. Конечно функции формат я не знал, но можно было привести дату к строке и из строки получить все что нужно по позиционно. 

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск