У меня есть два объекта datetime
. Мне нужно вычислить timedelta
между ними, а затем показать вывод в определенном формате.
Alpha_TimeObj = datetime.datetime(int(AlphaTime.strftime('%Y')), int(AlphaTime.strftime('%m')), int(AlphaTime.strftime('%d')), int(AlphaTime.strftime('%H')), int(AlphaTime.strftime('%M')), int(AlphaTime.strftime('%S')))
Beta_TimeObj = datetime.datetime(int(BetaTime.strftime('%Y')), int(BetaTime.strftime('%m')), int(BetaTime.strftime('%d')), int(BetaTime.strftime('%H')), int(BetaTime.strftime('%M')), int(BetaTime.strftime('%S')))
Turnaround_TimeObj = Beta_TimeObj - Alpha_TimeObj
Примером этой дельты времени Turnaround_TimeObj
является "2 дня, 22:13:45". Я хочу отформатировать вывод, но не могу этого сделать.
print Turnaround_TimeObj.strftime('%H hrs %M mins %S secs')
не работает.
Я знаю, что один из способов сделать это - преобразовать его в секунды, а затем разделить, чтобы получить необходимое форматирование.
Как в:
totalSeconds = Turnaround_TimeObj.seconds
hours, remainder = divmod(totalSeconds, 3600)
minutes, seconds = divmod(remainder, 60)
print '%s:%s:%s' % (hours, minutes, seconds)
Но мне было интересно, смогу ли я сделать это в одной строке, используя любую функцию даты и времени, например strftime
.
На самом деле преобразование в секунды тоже не работает. Если я преобразую дельту времени "1 день, 3:42:54" в секунды, используя:
totalSeconds = Turnaround_TimeObj.seconds
Значение totalSeconds
отображается как 13374 вместо 99774. Т.е. оно игнорирует значение "день".