Как получить общее количество часов и минут для timedelta в python

Как мне вернуться или включить timedelta, которая больше 24 часов, в объект, содержащий общее количество часов и минут (например, 26:30) вместо "1 день, 2:30"?

спасибо

Томас

Ответ 1

Вы можете использовать total_seconds() для вычисления количества секунд. Затем это можно превратить в минуты или часы:

>>> datetime.timedelta(days=3).total_seconds()
259200.0

Ответ 2

Завершение ответа Visser с помощью timedelta.total_seconds():

import datetime
duration = datetime.timedelta(days = 2, hours = 4, minutes = 15)

Как только мы получили объект timedelta:

totsec = duration.total_seconds()
h = totsec//3600
m = (totsec%3600) // 60
sec =(totsec%3600)%60 #just for reference
print "%d:%d" %(h,m)

Out: 52:15

Ответ 3

offset_seconds = timedelta.total_seconds()

if offset_seconds < 0:
    sign = "-"
else:
    sign = "+"

# we will prepend the sign while formatting
if offset_seconds < 0:
    offset_seconds *= -1

offset_hours = offset_seconds / 3600.0
offset_minutes = (offset_hours % 1) * 60

offset = "{:02d}:{:02d}".format(int(offset_hours), int(offset_minutes))
offset = sign + offset