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

如何修改Python代码实现5位及以上年份日期的星期查询

解决Python datetime支持5位及以上年份的问题

原代码的问题出在datetime.strptime的格式符%Y上——这个格式符仅匹配4位数字的年份,当传入5位及更长的年份时,strptime会把超出4位的部分当成未转换的剩余数据,从而抛出ValueError。

修改方案:直接拆分日期字符串构造日期对象

不需要依赖strptime的格式匹配,直接按空格拆分输入的日期字符串,将日、月、年分别转为整数后,用datetime.date构造对象即可,这种方式支持任意合法长度的年份(只要在Python datetime的支持范围内):

import datetime
import calendar
 
def findDay(date):
    # 按空格拆分日期,转换为整数类型的日、月、年
    day, month, year = map(int, date.split())
    # 构造日期对象
    born_date = datetime.date(year, month, day)
    # 返回对应的星期名称
    return calendar.day_name[born_date.weekday()]

# 测试4位年份
print(findDay("01 01 2022"))  # 输出: Saturday
# 测试5位年份
print(findDay("01 01 20200"))  # 输出: Wednesday

为什么原代码会报错?

原代码中datetime.datetime.strptime(date, '%d %m %Y')的%Y只能匹配4位数字,当传入"01 01 20200"时,strptime会读取2020作为年份,剩下的0无法匹配格式,因此触发ValueError: unconverted data remains: 0。

内容的提问来源于stack exchange,提问作者M1n3c4rt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 07:24:20