Python Сравнение временных данных

Я хочу проверить, больше ли текущая дата, чем дата, введенная пользователем. Все даты преобразуются с помощью strftime('%d/%m/%Y'). Но если я сравниваю обе даты, то получаю неверный результат:

absenzen.view

current_date = datetime.date.today().strftime('%d/%m/%Y')
return render(request, 'absenzen.html', {'absenzen': absenzen_local, 'current_date': current_date)

методget_absenzen

expire_date = absenz.date + datetime.timedelta(days=10)
absenzen_list.append(expire_date.strftime('%d/%m/%Y'))
absenzen_list_complete.append(absenzen_list)

html

{% if absenzen_list.0 == 'Nein' %}
    {{ absenzen_list.1 }} {{ current_date }}
    {% if absenzen_list.1 < current_date %}
        <p><strong>Abgabedatum schon abgelaufen</strong></p>
    {% else %}
        <p>--> Abgabadatum: {{ absenzen_list.1 }}</p>
    {% endif %}
{% else %}
    <p>Abgegeben</p>
{% endif %}

{% if absenzen_list.1 < current_date %} --> Возвращает True, если: 04/11/2022 - Дата 25/10/2022 - сегодняшняя дата

Когда я удаляю .strftime(), сравнение корректно.

current_date = datetime.date.today().strftime('%d/%m/%Y')

print(current_date, type(current_date))#25/10/2022 <class 'str'>


current_date = datetime.date.today()

print(current_date, type(current_date))#2022-10-25 <class 'datetime.date'>

Если вы выведете тип данных current_date, то он будет иметь вид: <class 'str'>. То есть, при применении strftime, и получается строка. А также формируете absenzen_list как строку. Получается, что вы сравниваете строку со строкой, но вам нужно, чтобы данные были datetime.

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