Format timedelta to string Format timedelta to string python python

Format timedelta to string


You can just convert the timedelta to a string with str(). Here's an example:

import datetimestart = datetime.datetime(2009,2,10,14,00)end   = datetime.datetime(2009,2,10,16,00)delta = end-startprint(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 = 13420hours, 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 secondss = 13420# hourshours = s // 3600 # remaining secondss = s - (hours * 3600)# minutesminutes = s // 60# remaining secondsseconds = s - (minutes * 60)# total timeprint '{:02}:{:02}:{:02}'.format(int(hours), int(minutes), int(seconds))# result: 03:43:40


>>> 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 don't want the seconds, we can split the string by colons (3 parts) and put it back together with only the first 2 parts.