Поиск записей в базе данных, которые имеют одинаковую дату с определенным часовым поясом в django
Итак, я создал веб-страницу, которая позволяет конечному пользователю выбрать дату начала и дату окончания. Затем reactjs frontend отправляет POST запрос с полезной нагрузкой, содержащей начальную и конечную даты, выбранные на панели выбора даты, предоставленной react-datepicker. После передачи начальной и конечной даты на сервер django, я хотел бы сгруппировать записи с одинаковой датой и получить общее количество записей за каждый день, а затем вернуть список итогов. Обратите внимание, что в сервере django (settings.py) есть USE_TZ=true, TIME_ZONE='Asia\Kuala Lumpur'. Хотелось бы получить список итогов в таком формате [ totalFirstDay, totalSecondDay, totalThirdDay, totalFourthDay, ... ]
Это моя текущая попытка получить желаемые результаты
def getTotalRecordsEachDay(request):
## for example request.POST['startDate'] == "2021-09-30T16:00:00.000Z"
startDate = timezone.now().strptime(request.POST['startDate'], '%Y-%m-%dT%H:%M:%S.%fZ')+timedelta(days=1)
## for example request.POST['endDate'] == "2021-10-30T16:00:00.000Z"
endDate = timezone.now().strptime(request.POST['endDate'], '%Y-%m-%dT%H:%M:%S.%fZ')+timedelta(days=2, microseconds=-1)
totalFoundEachDay = []
sameDay = startDate.date()
## In Mode.py, createDate = models.DateTimeField(default=timezone.now)
statistics = models.MemberCard.objects.filter(createDate__date__range=[startDate, endDate])
if len(statistics) > 0:
noOfRecord=0
totalRecordsSameDay = 0
for item in statistics:
noOfRecord+=1
if(sameDay == item.createDate.date()):
totalRecordsSameDay+=1
if(noOfRecord == len(statistics)):
totalFoundEachDay.append(totalRecordsSameDay)
else:
totalFoundEachDay.append(totalRecordsSameDay)
sameDay = sameDay + timezone.timedelta(days=1)
totalRecordsSameDay = 0
if(sameDay == item.createDate.date()):
totalRecordsSameDay+=1
if(noOfRecord == len(statistics)):
totalFoundEachDay.append(totalRecordsSameDay)
return JsonResponse({
"startDate": startDate,
"endDate": endDate,
"totalFoundEachDay": totalFoundEachDay,
}, status=200, safe=False)
Проблема, с которой я столкнулся, заключается в том, что в TIME_ZONE='Asia\Kuala Lumpur', '2021-10-22T15:59:59.999Z' является тем же днем, что и '2021-10-21T16:00:00.000Z', даже если один день 2021-10-21, а другой 2021-10-22. Есть ли решение, которое может решить эту проблему с часовыми поясами?