Django-TimeField差异

时间:2018-12-17 12:34:02

标签: django time timefield

我想比较两个时间字段以获得小时和分钟的差异。

class Labor(models.Model):
    id = models.AutoField(primary_key=True)
    start_hour = models.TimeField(null=True)
    end_hour = models.TimeField(null=True)

    def hours(self):
        return self.end_hour - self.start_hour 

但是,如果尝试使用hours方法,django会抛出此异常:

unsupported operand type(s) for -: 'datetime.time' and 'datetime.time'

我希望差异能给我这样的东西:

10:00〜11:30 = 1:30

11:30〜11:45 = 0:15

我该怎么办?

2 个答案:

答案 0 :(得分:0)

首先将字段设置为DateTimeField,如@Chiefir所述,这为您提供了一个datetime对象。

然后

def hours(self):
        c = self.end_time - self.start_time
        print(c.seconds) 
        # Write your logic to convert seconds to hours.

答案 1 :(得分:0)

如果您不想将字段设为DateTimeField,则可以做一些快速数学运算(假设您的时间是同一天)。

def hours(self):
    end_minutes = self.end_hour.hour*60 + 
    self.end_hour.minute
    start_minutes = self. start_hour.hour*60 + self.start_hour.minute
    return (end_minutes - start_minutes) / 60

这将返回一个浮点数,但您始终可以舍入该值。您可能还需要检查以确保self.end_hour大于self.start_hour