Предположим, что у вас есть две даты и время как datetime
объекты (см. datetime.datetime ):
>>> import datetime
>>> start_time = datetime.datetime(2011,3,10,15,45,48)
>>> end_time = datetime.datetime(2011,3,10,18,4,0)
Вычитание одного datetime
из другого дает вам объект timedelta
, и вы можете использовать abs
, чтобы обеспечить положительную разницу во времени:
>>> start_time - end_time
datetime.timedelta(-1, 78108)
>>> abs(start_time - end_time)
datetime.timedelta(0, 8292)
Теперь, чтобы преобразовать разницу секунд из временной шкалы в часы, просто поделите на 3600:
>>> hours_difference = abs(start_time - end_time).total_seconds() / 3600.0
>>> hours_difference
2.3033333333333332
Обратите внимание, что метод total_seconds()
был введен в Python 2.7, поэтому, если вы хотите использовать его в более ранней версии, вам нужно будет рассчитать его самостоятельно из .days
и .seconds
, как в этого ответа
Обновление: Йохен Ритцель указывает в комментарии ниже, что если вас интересует только сравнение с количеством часов, а не исходное значение, вы можно сделать это проще с помощью:
abs(start_time - end_time) > timedelta(hours=6)