debug:发现9号和10号数据是重叠的
解法:日期有错误
将booking_end_date = booking_end_date + dt.timedelta(days=1)改成booking_end_date_copy = booking_end_date + dt.timedelta(days=1)
# 定义全局函数def
booking_all = booking.objects.all()
def count_approve_hour_and_percentage(classroom_name,booking_start_date,booking_end_date):
# booking_end_date结束日期加上一天
booking_end_date_copy = booking_end_date + dt.timedelta(days=1)
diff= (booking_end_date_copy - booking_start_date)
diff_days = diff.days
#diff_days = 30
#print('diff.days',diff.days)
fenzi = booking_all.filter(Q(booking_classroom_name__contains=classroom_name) & Q(booking_date__gte=booking_start_date) & Q(booking_date__lte=booking_end_date) & Q(booking_approve_Y_N='Y'))
# fenzi = booking_all.filter(Q(booking_classroom_name__contains=classroom_name) & Q(booking_date__gte=booking_start_date) & Q(booking_date__lte=booking_end_date) & Q(booking_approve_Y_N='Y'))
fenzi_sum = 0
for each in fenzi:
print('each',each.booking_date,each.booking_id)
today_d = dt.date.today()
total_time = dt.datetime.combine(today_d,each.booking_end_time) - dt.datetime.combine(today_d,each.booking_start_time)
total_minutes = int(str(total_time).split(':')[0])*60 + int(str(total_time).split(':')[1])+1
fenzi_sum += total_minutes
# fenzi_percentage = round(100* fenzi_sum / (30*60*8),1)
fenzi_percentage = round(100* fenzi_sum / (diff_days*60*8),1)
# print(fenzi_percentage,fenzi_sum)
return fenzi_percentage,fenzi_sum
改善后的图