Преобразование даты в часы - PullRequest
5 голосов
/ 10 апреля 2011

Я хочу найти разницу во времени между двумя датами, а затем сравнить разницу во времени в часах.Примерно так:

StartTime = 2011-03-10 15:45:48 EndTime = 2011-03-10 18: 04: 00

А затем найдите разницу как, timeDifference = abs(StartTime - EndTime) И затем мне нужно сравнить результаты, как, если timeDifference> 6 часов ...

Когда я использую этот метод, я получил результаты в формате времени, как я должен изменить времяотформатировать в часы в python?

Спасибо,

1 Ответ

7 голосов
/ 10 апреля 2011

Предположим, что у вас есть две даты и время как 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)
...