Поиск записей в базе данных, которые имеют одинаковую дату с определенным часовым поясом в 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. Есть ли решение, которое может решить эту проблему с часовыми поясами?

Вернуться на верх