Search code examples
pythonstringdatetimeformattimedelta

Format timedelta to string


I'm having trouble formatting a datetime.timedelta object.

Here's what I'm trying to do: I have a list of objects and one of the members of the class of the object is a timedelta object that shows the duration of an event. I would like to display that duration in the format of hours:minutes.

I have tried a variety of methods for doing this and I'm having difficulty. My current approach is to add methods to the class for my objects that return hours and minutes. I can get the hours by dividing the timedelta.seconds by 3600 and rounding it. I'm having trouble with getting the remainder seconds and converting that to minutes.

By the way, I'm using Google AppEngine with Django Templates for presentation.


Solution

  • Thanks everyone for your help. I took many of your ideas and put them together, let me know what you think.

    I added two methods to the class like this:

    def hours(self):
        retval = ""
        if self.totalTime:
            hoursfloat = self.totalTime.seconds / 3600
            retval = round(hoursfloat)
        return retval
    
    def minutes(self):
        retval = ""
        if self.totalTime:
            minutesfloat = self.totalTime.seconds / 60
            hoursAsMinutes = self.hours() * 60
            retval = round(minutesfloat - hoursAsMinutes)
        return retval
    

    In my django I used this (sum is the object and it is in a dictionary):

    <td>{{ sum.0 }}</td>    
    <td>{{ sum.1.hours|stringformat:"d" }}:{{ sum.1.minutes|stringformat:"#02.0d" }}</td>