Этот псевдокод дает вам алгоритм для расчета разницы в минутах.
Предполагается, что, если время начала находится после времени окончания, время начала фактически было в предыдущий день.
startx = starthour * 60 + startminute
endx = endhour * 60 + endminute
duration = endx - startx
if duration < 0:
duration = duration + 1440
Значения startx
и endx
- это количество минут с полуночи.
Это в основном делает:
- Получить количество минут от начала дня для времени начала.
- Получите количество минут от начала дня до времени окончания.
- Вычтите первое из второго.
- Если результат отрицательный, добавить количество минут в день.
Не будьте настолько уверены, что вы не можете использовать функции манипуляции с датой / временем. Вы можете обнаружить, что вы можете легко построить дату / время и рассчитать разницу, например:
DateTime startx = new DateTime (1, 1, 2010, starthour, startminute, 0);
DateTime endx = new DateTime (1, 1, 2010, endhour , endminute , 0);
Integer duration = DateTime.DiffSecs(endx, startx) / 60;
if (duration < 0)
duration = duration + 1440;
хотя это, вероятно, не нужно для вашего простого сценария. Я бы придерживался псевдокода, который я дал выше, если только вы не обнаружите, что делаете более хитрую манипуляцию с датой и временем.
Если вы хотите превратить продолжительность (в минутах) в часы и минуты:
durHours = int(duration / 60)
durMinutes = duration % 60 // could also use duration - (durHours * 60)