Джанго - разница по времени
Я хотел бы сравнить два поля времени, чтобы получить разницу в часах и минутах.
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
Как я мог это сделать?
1 ответ
Сначала сделайте поля как DateTimeField, как упомянуто @Chiefir, это даст вам объект datetime.
затем,
def hours(self):
c = self.end_time - self.start_time
print(c.seconds)
# Write your logic to convert seconds to hours.
Если вы не хотите делать свои поля DateTimeField
s, вы можете просто быстро посчитать (при условии, что ваше время соответствует одному и тому же дню).
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
.