Нахождение разницы во времени, когда a больше, чем b

#python

Вопрос:

Когда a и b близки, код работает нормально. Я попробовал это с 2359 в качестве a и 1 в качестве b, и это дало правильное количество часов, но дало 1438 минут вместо 58. Я знаю, что это потому, что он не меняет значение минуты для a. Любой совет, как это исправить. Я также попробовал метод добавления % 1440, но он не сработал.

 numA = int(input("A departs at: "))
Ahours = numA // 100
Aminutes = numA % 100
numA = Ahours * 60   Aminutes

numB = int(input("B departs at: "))
Bhours = numB // 100
Bminutes = numB % 100
numB = Bhours * 60   Bminutes

diffMin = abs(numB - numA)
diffHours = diffMin // 60
 

Ответ №1:

В настоящее время ваш код устанавливает diffMin в общее количество минут между временем a и временем b. Это включает в себя несколько часов между этими двумя временами. Чтобы этого не произошло, либо вычтите соответствующее количество минут:

 #get numB
#get numA
diffMin = abs(numB-numA)
diffHours = diffMin // 60
diffMin -= 60*diffHours
 

Или вы можете использовать модуль 60:

 #get numB
#get numA
diffMin = abs(numB-numA)
diffHours = diffMin // 60
diffMin %= 60
 

Вы также можете использовать модуль datetime, который обладает некоторыми действительно отличными функциями для обработки дат и времени

Комментарии:

1. О, в этом больше смысла, спасибо

Ответ №2:

Вы уверены, что строка numB = Bhours * 60 Bminutes не должна читаться trainB = Bhours * 60 Bminutes ?

Кроме того, зачем тратить все силы на вычисления trainA , trainB а затем не использовать их при расчете разницы в конце?