Format timedelta to string

后端 未结 28 2240
春和景丽
春和景丽 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条回答
  •  闹比i
    闹比i (楼主)
    2020-11-22 04:28

    A straight forward template filter for this problem. The built-in function int() never rounds up. F-Strings (i.e. f'') require python 3.6.

    @app_template_filter()
    def diffTime(end, start):
        diff = (end - start).total_seconds()
        d = int(diff / 86400)
        h = int((diff - (d * 86400)) / 3600)
        m = int((diff - (d * 86400 + h * 3600)) / 60)
        s = int((diff - (d * 86400 + h * 3600 + m *60)))
        if d > 0:
            fdiff = f'{d}d {h}h {m}m {s}s'
        elif h > 0:
            fdiff = f'{h}h {m}m {s}s'
        elif m > 0:
            fdiff = f'{m}m {s}s'
        else:
            fdiff = f'{s}s'
        return fdiff
    

提交回复
热议问题