days, hours, minutes = td.days, td.seconds // 3600, td.seconds // 60 % 60
Что касается летнего времени, я думаю, что лучше всего конвертировать datetime
объекты в секунды. Таким образом, система рассчитывает DST для вас.
>>> 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 seconds
82800.0
>>> _/3600 # convert to hours
23.0