web-dev-qa-db-fra.com

Comment obtenir le nombre total d'heures et de minutes pour timedelta en Python

Comment retourner ou transformer un timedelta, qui dépasse 24 heures, en un objet contenant le nombre total d'heures et de minutes (par exemple, 26h30) au lieu de "1 jour, 2h30"?

14
ThomasD

Vous pouvez utiliser total_seconds() pour calculer le nombre de secondes. Cela peut alors être transformé en minutes ou en heures:

>>> datetime.timedelta(days=3).total_seconds()
259200.0
21
Simeon Visser

Compléter la réponse de Visser en utilisant timedelta.total_seconds() :

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

Une fois que nous avons eu un objet 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
7
G M
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
0
Vineeta Khatuja