как вычесть две даты из django? - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь вычесть «время окончания» поездки из «времени начала». starttime извлекается непосредственно из базы данных (models.py), и на это указывает строка start = n [0] .driverStarttime. Теперь я использую текущее время как «время окончания» поездки. Переменная diff используется для вычитания времени окончания и времени начала. но он дает ошибку «TypeError at / driver_panel / endtrip не может вычесть наивную смещение и ошибку времени с учетом смещения». здесь driver_panel - мое приложение в проекте. Таблица Driverbooking используется для получения времени начала. DateTimeField используется для времени начала и окончания магазина. вот код ...

def endtrip(request):
    if request.method == 'GET':
        dbid = request.GET.get('driverBookID')
        if dbid:
            n = Driverbooking.objects.all().filter(driverBookID=dbid)
            name = n[0].customerID
            start = n[0].driverStartTime
            end = datetime.datetime.now()

            diff = end - start

            total = diff * 10
            a = Driverbooking.objects.get(driverBookID=dbid)
            a.driverStatus = "end"
            a.driverEndTime = end
            a.driverAmount = total
            a.save()

            did = request.session['uid']
            x = Driverside.objects.all().filter(driverID=did)
            rate = x[0].driverFPH
            d = Driverside.objects.get(driverID=did)
            d.driverIsAvailable = "yes"
            d.save()
            context = {"name":name,"start":start,"end":end,"rate":rate,"t":total}
            return render(request, "driverbill.html", context)
            return redirect('driverhome')

1 Ответ

0 голосов
/ 16 июня 2020

Проблема возникает, потому что вы, кажется, вычитаете «время начала» (которое, вероятно, имеет информацию о часовом поясе) и «время окончания» (которое не имеет часового пояса).

Простое решение - использовать правильное текущее время с часовым поясом, например , timezone документы предлагают.

Вместо этой строки:

end = datetime.datetime.now()

попробуйте следующее:

from django.utils import timezone as tz
end = tz.now()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...