该函数在两种情况下工作

The function works in two scenarios

提问人:Kazak 提问时间:11/16/2023 最后编辑:Kazak 更新时间:11/19/2023 访问量:43

问:

def is_valid_shelf_life(date):
    try:
        shelf_life = datetime.strptime(date, "%d.%m.%y")
    except(TypeError, ValueError):
        return True
    return False


@db.message_handler(is_valid_shelf_life, state=ProductAddingStatesGroup.shelf_life)
async def check_shelf_life(message: types.Message):
    await message.answer("Дата введена не корректно!")

当日期输入不正确时,该函数应该可以工作,但在我的情况下,当我输入正确的日期时,检查仍然失败。check_shelf_life

我试图在函数中交换 True 和 False,但在这种情况下,传递了正确和无效的数据。is_valid_shelf_life

python-3.x aiogram

评论

0赞 KLaz 11/16/2023
这篇文章需要更多关于代码目标和输入日期示例格式的解释。
0赞 Kazak 11/17/2023
我写了一个电报机器人,在保存日期之前,我检查它,如果日期输入错误,则调用check_shelf_life处理程序,如果正确,则将其保存在状态机中。

答:

0赞 Alex 11/16/2023 #1
  1. 更改 True 和 False。
  2. 您正在等待 .您不能使用 .如果要使用全年,请使用 ."%d.%m.%y"16.11.232023%Y

查看文档中的 strptime 格式代码

def is_valid_shelf_life(date):
    try:
        shelf_life = datetime.strptime(date, "%d.%m.%y")
    except(TypeError, ValueError):
        return False
    return True

is_valid_shelf_life("16.11.23") # True
is_valid_shelf_life("16.11.2023") # False
is_valid_shelf_life("16.13.23") # Fasle

评论

0赞 Kazak 11/17/2023
当日期输入错误时,我只需要它是 True 即可捕获错误。
0赞 Alex 11/17/2023
@Kazak好吧,那么我猜只是修复 strptime 格式?给期的输入示例
0赞 Kazak 11/19/2023 #2

我需要输入,而不仅仅是date.textdate