Convert a timedelta to days, hours and minutes Convert a timedelta to days, hours and minutes python python

# Convert a timedelta to days, hours and minutes

If you have a `datetime.timedelta` value `td`, `td.days` already gives you the "days" you want. `timedelta` values keep fraction-of-day as seconds (not directly hours or minutes) so you'll indeed have to perform "nauseatingly simple mathematics", e.g.:

``def days_hours_minutes(td):    return td.days, td.seconds//3600, (td.seconds//60)%60``

This is a bit more compact, you get the hours, minutes and seconds in two lines.

``days = td.dayshours, remainder = divmod(td.seconds, 3600)minutes, seconds = divmod(remainder, 60)# If you want to take into account fractions of a secondseconds += td.microseconds / 1e6``

``days, hours, minutes = td.days, td.seconds // 3600, td.seconds // 60 % 60``

As for DST, I think the best thing is to convert both `datetime` objects to seconds. This way the system calculates DST for you.

``>>> m13 = datetime(2010, 3, 13, 8, 0, 0)  # 2010 March 13 8:00 AM>>> m14 = datetime(2010, 3, 14, 8, 0, 0)  # DST starts on this day, in my time zone>>> mktime(m14.timetuple()) - mktime(m13.timetuple())     # difference in seconds82800.0>>> _/3600                                                # convert to hours23.0``