Фильтрация между двумя датами в django

Как отфильтровать записи, которые находятся между двумя датами включительно в django? У меня есть пример кода ниже, однако он не возвращает ожидаемых результатов.

# based on the Developer's Tool in Chrome, 
# request.POST['startDate'] == '2021-10-22T16:00:00.000Z'
# request.POST['endDate'] == '2021-10-22T16:00:00.000Z'
startDate = timezone.now().strptime(request.POST['startDate'], '%Y-%m-%dT%H:%M:%S.%fZ')
endDate = timezone.now().strptime(request.POST['endDate'], '%Y-%m-%dT%H:%M:%S.%fZ')+timedelta(days=1, microseconds=-1)
statistics = models.MemberCard.objects.filter(createDate__gte=startDate, createDate__lte=endDate).order_by("-createDate")
if len(statistics) > 0:
    for item in statistics:
        dateFound.append(item.createDate)

Поскольку я ищу GMT+8, поэтому желаемая начальная дата '2021-10-22T16:00:00.000Z' и конечная дата '2021-10-23T15:59:59.999Z', чтобы получить '2021-10-23T00:00:00Z' для начальной даты и '2021-10-23T23:59:59.999Z' для конечной даты после преобразования в GMT+8

Хотелось бы узнать какие-либо проблемы с кодом выше, который я написал? Или любые лучшие решения для этой проблемы более чем приветствуются

Первые четыре записи Последние четыре записи

from datetime import datetime

startDate = datetime.strptime(request.POST['startDate'], '%Y-%m-%dT%H:%M:%S.%fZ').date()
endDate = datetime.strptime(request.POST['endDate'], '%Y-%m-%dT%H:%M:%S.%fZ').date()
statistics = models.MemberCard.objects.filter(createDate__range=(startDate, endDate)).order_by("-createDate")

Обратите внимание, что это работает для целых дат, но я думаю, что это то, что вам нужно.

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