3

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

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

我怎么能那样做?

4

2 回答 2

2

如果你不想让你的领域成为DateTimeFields,你可以做一些快速的数学运算(假设你的时间是在同一天)。

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

于 2019-08-08T21:19:42.980 回答
2

首先将字段设置为@Chiefir 提到的 DateTimeField ,这将为您提供一个日期时间对象。

然后,

def hours(self):
        c = self.end_time - self.start_time
        print(c.seconds) 
        # Write your logic to convert seconds to hours.
于 2018-12-17T14:03:16.733 回答