python – Format timedelta to string
python – Format timedelta to string
You can just convert the timedelta to a string with str(). Heres an example:
import datetime
start = datetime.datetime(2009,2,10,14,00)
end = datetime.datetime(2009,2,10,16,00)
delta = end-start
print(str(delta))
# prints 2:00:00
As you know, you can get the total_seconds from a timedelta object by accessing the .seconds
attribute.
Python provides the builtin function divmod()
which allows for:
s = 13420
hours, remainder = divmod(s, 3600)
minutes, seconds = divmod(remainder, 60)
print {:02}:{:02}:{:02}.format(int(hours), int(minutes), int(seconds))
# result: 03:43:40
or you can convert to hours and remainder by using a combination of modulo and subtraction:
# arbitrary number of seconds
s = 13420
# hours
hours = s // 3600
# remaining seconds
s = s - (hours * 3600)
# minutes
minutes = s // 60
# remaining seconds
seconds = s - (minutes * 60)
# total time
print {:02}:{:02}:{:02}.format(int(hours), int(minutes), int(seconds))
# result: 03:43:40
python – Format timedelta to string
>>> str(datetime.timedelta(hours=10.56))
10:33:36
>>> td = datetime.timedelta(hours=10.505) # any timedelta object
>>> :.join(str(td).split(:)[:2])
10:30
Passing the timedelta
object to the str()
function calls the same formatting code used if we simply type print td
. Since you dont want the seconds, we can split the string by colons (3 parts) and put it back together with only the first 2 parts.