How to get total hours and minutes for timedelta in Python
Question:
How do I return or turn a timedelta, which is bigger than 24 hours, into an object containing the total hours and minutes (for example, 26:30) instead of “1 day, 2:30”?
Answers:
You can use total_seconds()
to compute the number of seconds. This can then be turned into minutes or hours:
>>> datetime.timedelta(days=3).total_seconds()
259200.0
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
Completing the answer of Visser using timedelta.total_seconds()
:
import datetime
duration = datetime.timedelta(days = 2, hours = 4, minutes = 15)
Once we got a timedelta
object:
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
How do I return or turn a timedelta, which is bigger than 24 hours, into an object containing the total hours and minutes (for example, 26:30) instead of “1 day, 2:30”?
You can use total_seconds()
to compute the number of seconds. This can then be turned into minutes or hours:
>>> datetime.timedelta(days=3).total_seconds()
259200.0
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
Completing the answer of Visser using timedelta.total_seconds()
:
import datetime
duration = datetime.timedelta(days = 2, hours = 4, minutes = 15)
Once we got a timedelta
object:
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