Python使用datetime模块计算年龄出现TypeError该如何解决
错误原因
- 你代码中
d是datetime.date类本身,不是当前日期的实例,你已经通过d.today()获取了当前日期实例存在变量date里,应该用这个实例读取日期属性 year/month/day是日期实例的属性,不是可调用方法,不需要加()调用,加括号会触发你遇到的类型错误
正确实现逻辑
计算周岁需要额外判断当年的生日是否已经度过,不能直接用年月日分别相减:
- 先用当前年份减去出生年份得到初步年龄
- 对比当前的月、日和出生的月、日,如果当前月日小于出生月日,说明当年生日还没到,初步年龄减1得到最终周岁
完整可运行代码
from datetime import date as d # 获取当前日期,变量名不用date避免和类名混淆 today = d.today() # 输入出生年月日,可根据实际需求修改为参数传入 birth_year = 2000 birth_month = 6 birth_day = 1 # 计算年龄 age = today.year - birth_year if (today.month, today.day) < (birth_month, birth_day): age -= 1 print(f"当前年龄为{age}周岁")
内容的提问来源于stack exchange,提问作者Anonymous RU
相关产品推荐
相关产品推荐

