时差输出不符合预期

Output of Time difference is not as is expected

models.py:

class Attendancename(models.Model):
    teacher_name = models.ForeignKey(Teachername)
    date = models.DateField('Date')
    intime = models.TimeField('IN-TIME')
    outtime = models.TimeField('OUT-TIME')
    def hours_conversion(self):
        tdelta = (datetime.datetime.combine(datetime.date.today(),self.outtime) - datetime.datetime.combine(datetime.date.today(),self.intime))
        res = float((tdelta).seconds/3600)
        return '{0:.2f}'.format(res,)

我曾经在模型中定义方法 class 来计算 'intime''outtime' 之间的时间差。我也成功了,但是结果不是我想的那样。

我在我的表单字段中输入了 'intime'-09:00 am 和 'outime'-12:32 pm,它显示 'total hours' - 3.54hr 作为输出。

任何人都知道到底出了什么问题吗? 谢谢!提前。

输出是以小时和分钟的形式得到的小时数

output = '{0:.2f}'.format(res,)
hours = output-(output%1)
minutes = (output%1)*60
return hours+":"+minutes

需要

要以 hh:mm (3:32) 的形式获得输出,您需要访问 timedelta 的那些属性。用以下内容替换您的 return 语句。

hours, minutes = tdelta.seconds//3600, (tdelta.seconds//60)%60
return '{0}:{1}'.format(hours, minutes)

如果你不介意秒;你可以调用 str() 函数:

>>> from datetime import timedelta
>>> td = timedelta(hours=3, minutes=32)
>>> str(td)
'3:32:00'

您可以删除秒和微秒:

>>> str(td).rpartition(':')[0]
'3:32'

或者您可以手动格式化:

hours, seconds = divmod(td.total_seconds(), 3600)
minutes, seconds = divmod(seconds, 60)
print("%02d:%02d" % (hours, minutes))
# -> 03:32