我想比较两个时间字段以获得小时和分钟的差异。
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
我该怎么办?
答案 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
。