格式化timedelta对象python

格式化timedelta对象python,python,formatting,timedelta,Python,Formatting,Timedelta,我编写了这个小脚本来根据需要格式化timedelta对象: def due_format(self): time_diff = abs((self.due - datetime.datetime.now()).total_seconds()) days = time_diff / 60 / 60 / 24 hours = time_diff / 60 / 60 minutes = time_diff / 60

我编写了这个小脚本来根据需要格式化timedelta对象:

   def due_format(self):
        time_diff = abs((self.due - datetime.datetime.now()).total_seconds())
        days = time_diff / 60 / 60 / 24
        hours = time_diff / 60 / 60
        minutes = time_diff / 60
        hours_wo_days = hours - (math.floor(days) * 24)
        minutes_wo_hours = minutes - (math.floor(hours) * 60)
        if (days >= 7):
            self.due_format = '{} Days'.format(int(days))
        elif (hours > 48):
            self.due_format = '{} Days, {} Hours'.format(int(days), int(hours_wo_days))
        elif (hours <= 48 and hours >= 10 ):
            self.due_format = '{} Hours'.format(int(hours))
        elif (hours <= 1):
            self.due_format = '{} Minutes'.format(int(minutes))
        elif (hours < 10):
            self.due_format = '{} Hours, {:.0f} Minutes'.format(int(hours), int(minutes_wo_hours))
def到期日格式(self):
time_diff=abs((self.due-datetime.datetime.now()).total_seconds())
天数=时间差/60/60/24
小时=时间差/60/60
分钟=时间差/60
小时天数=小时-(数学楼层(天)*24)
分钟/小时=分钟-(数学楼层(小时)*60)
如果(天数>=7):
self.due_格式=“{}天”。格式(int(天))
elif(小时数>48):
self.due_format='{}Days,{}Hours'。格式(int(Days),int(Hours_wo_Days))
elif(小时=10):
self.due_format='{}Hours'。格式(int(Hours))

elif(hourstimedelta实例具有.days和.seconds属性,可以节省几行。它们还可以保持较小的值,因此您可以提前转换为int一次,而不是每个字符串格式。这也消除了对abs()的需要和.floor.

您能解释一下您对当前方法不满意的地方吗?我只是希望有一种更简单/更具Python风格的方法。只想学习:)始终提及您使用的Python。在这种情况下,total_seconds意味着3.2说的是“3.2版中的新版本”,但你是对的。