You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:如何修改Python程序实现自定义日期的星期查询并解决AttributeError错误?

解决自定义日期查询星期的问题

嘿,这个问题我之前也碰到过,咱们一步步来搞定它!

为什么会报错?

你遇到的AttributeError: 'str' object has no attribute 'weekday'错误,根源很简单:

  • input()函数返回的是字符串类型的数据,而weekday()是datetime.date对象独有的方法,字符串当然没有这个属性啦。
  • 你之前的代码里,date.today()返回的是现成的date对象,所以能直接调用weekday(),但换成用户输入的字符串就不行了。

解决方案:把字符串转成date对象

我们需要先把用户输入的日期字符串转换成date对象,之后就能正常调用方法了。这里分两种常见场景:

场景1:用户输入ISO标准格式(YYYY-MM-DD)

如果用户按年-月-日的格式输入,用date.fromisoformat()最方便,代码如下:

from datetime import date
import calendar

# 提示用户输入日期
date_input = input("请输入日期(格式:YYYY-MM-DD):")
try:
    # 将字符串转换为date对象
    target_date = date.fromisoformat(date_input)
    # 输出对应的星期名称
    print(f"这个日期是:{calendar.day_name[target_date.weekday()]}")
except ValueError:
    # 处理格式错误或无效日期的情况
    print("哎呀,输入的日期格式不对或者日期无效,请按照YYYY-MM-DD的格式重新输入哦!")

场景2:用户输入其他格式(比如DD/MM/YYYY)

如果用户习惯用日/月/年或者其他格式,就需要用datetime.strptime()来指定解析规则,代码示例:

from datetime import datetime
import calendar

date_input = input("请输入日期(格式:DD/MM/YYYY):")
try:
    # 按照指定格式解析字符串,再转成date对象
    target_date = datetime.strptime(date_input, "%d/%m/%Y").date()
    print(f"这个日期是:{calendar.day_name[target_date.weekday()]}")
except ValueError:
    print("输入格式不正确,请按照DD/MM/YYYY的格式输入,比如:01/01/2024")

小提示:格式符说明

用strptime的时候,这些格式符要对应好:

  • %Y:4位数字的年份(比如2024)
  • %m:两位数字的月份(比如01代表1月)
  • %d:两位数字的日期(比如05代表5号)
  • 如果是MM/DD/YYYY格式,就把格式字符串改成"%m/%d/%Y"就行。

内容的提问来源于stack exchange,提问作者Lars van Mil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 13:18:14