Диапазон времени, условие пропускает введеное значение. В чем может быть ошибка?

Пользователь должен ввести время в промежуток с 08:30 до 11:00.

Но условие пропускает любое значение, как можно изменить код?

@dp.message_handler(state=reg.tim_s)
async def get_tim(message: types.Message, state: FSMContext):
    answer = message.text
    try:
        if answer.strtime("%H:%M") >= "08:30" and answer.strtime("%H:%M") <= "11:00":

            await state.update_data(tim_s=answer)
        else:
            await message.answer('Введите корректное время с 08:30 до 11:00, например 09:30')

    except Exception:
        await message.answer('Введи корректную дату в формате %H:%M')

Ответы (2 шт):

Автор решения: icYFTL

Вы сравниваете строки answer.strtime("%H:%M") >= "08:30"
А надо сравнивать объекты времени:

from datetime import datetime

answer = input()
try:
    dt = datetime.strptime(answer, '%H:%M')
    fdt = datetime(hour=8, minute=30, year=dt.year, day=dt.day, month=dt.month)
    sdt = datetime(hour=11, minute=0, year=dt.year, day=dt.day, month=dt.month)

    if fdt <= dt <= sdt:
        print('ok')
    else:
        print('bad')

except Exception:
    print('error')
→ Ссылка
Автор решения: devnull

По итогу вы сравниваете не даты, а строки из-за этого ошибка

Вот пример рабочего кода:

from datetime import time, datetime


@dp.message_handler(state=reg.tim_s)
async def get_tim(message: types.Message, state: FSMContext):
    answer = message.text
    try:
        date_time = datetime.strptime(answer, '%H:%M')
    except (TypeError, ValueError):
        await message.answer('Введи корректную дату в формате %H:%M')
        return 

    input_time = date_time.time()
    if input_time >= time(hour=8, minute=30) and input_time <= time(hour=11, minute=00):
        await state.update_data(tim_s=answer) 
    else:
        await message.answer('Введите корректное время с 08:30 до 11:00, например 09:30')

Основные отличия что я привожу datetime к time и вынес из try except код который скорее всего не упадет


Также спасибо за ответ от @icYFTL

→ Ссылка