【问题标题】:Handling errors when inputting dates输入日期时处理错误
【发布时间】:2021-11-09 16:11:57
【问题描述】:

我有一个 Python 脚本,它要求用户输入今天的日期。我正在使用的方法给了我一个错误,我发现我很难弄清楚这个错误。我想要做的是要求用户输入今天的日期,然后如果日期不是格式“mm/dd/yyyy”,则输出一条消息。任何有关代码和错误的建议都会有所帮助。

from datetime import date
todays_date = input("Enter today's date: ")
try:
    todays_date = date.strftime(todays_date, "%m/%d/%Y")
except ValueError:
    print("Error: must be in mm/dd/yyyy ")
    input = input("press 1 to try again or 0 to exit: ")
    if input == "0":
        sys.exit()
print("Today's date is {todays_date}")

错误

todays_date = date.strftime(todays_date, "%m/%d/%Y")
TypeError: descriptor 'strftime' for 'datetime.date' objects doesn't apply to a 'str' object

【问题讨论】:

    标签: python error-handling


    【解决方案1】:

    这里需要的是strptime 而不是strftime。它们具有相反的功能

    from datetime import date
    todays_date = input("Enter today's date: ")
    try:
        todays_date = date.strptime(todays_date, "%m/%d/%Y")
    except ValueError:
        print("Error: must be in mm/dd/yyyy ")
        input = input("press 1 to try again or 0 to exit: ")
        if input == "0":
            sys.exit()
    print(f"Today's date is {todays_date}") # added f to correct string formatting
    

    【讨论】:

      【解决方案2】:

      你不能在你的情况下使用strftime,因为你有一个字符串格式。 相反,请尝试使用 strptime:

      from datetime import datetime
      todays_date = datetime.strptime(todays_date, "%m/%d/%Y")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-17
        • 2020-04-12
        相关资源
        最近更新 更多