Format timedelta to string

后端 未结 28 2343
春和景丽
春和景丽 2020-11-22 03:57

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 cl

28条回答
  •  面向向阳花
    2020-11-22 04:07

    def seconds_to_time_left_string(total_seconds):
        s = int(total_seconds)
        years = s // 31104000
        if years > 1:
            return '%d years' % years
        s = s - (years * 31104000)
        months = s // 2592000
        if years == 1:
            r = 'one year'
            if months > 0:
                r += ' and %d months' % months
            return r
        if months > 1:
            return '%d months' % months
        s = s - (months * 2592000)
        days = s // 86400
        if months == 1:
            r = 'one month'
            if days > 0:
                r += ' and %d days' % days
            return r
        if days > 1:
            return '%d days' % days
        s = s - (days * 86400)
        hours = s // 3600
        if days == 1:
            r = 'one day'
            if hours > 0:
                r += ' and %d hours' % hours
            return r 
        s = s - (hours * 3600)
        minutes = s // 60
        seconds = s - (minutes * 60)
        if hours >= 6:
            return '%d hours' % hours
        if hours >= 1:
            r = '%d hours' % hours
            if hours == 1:
                r = 'one hour'
            if minutes > 0:
                r += ' and %d minutes' % minutes
            return r
        if minutes == 1:
            r = 'one minute'
            if seconds > 0:
                r += ' and %d seconds' % seconds
            return r
        if minutes == 0:
            return '%d seconds' % seconds
        if seconds == 0:
            return '%d minutes' % minutes
        return '%d minutes and %d seconds' % (minutes, seconds)
    
    for i in range(10):
        print pow(8, i), seconds_to_time_left_string(pow(8, i))
    
    
    Output:
    1 1 seconds
    8 8 seconds
    64 one minute and 4 seconds
    512 8 minutes and 32 seconds
    4096 one hour and 8 minutes
    32768 9 hours
    262144 3 days
    2097152 24 days
    16777216 6 months
    134217728 4 years
    

提交回复
热议问题