使用字符串类型日期计算年龄时出现TypeError错误的技术咨询
问题解决:字符串日期转日期对象并计算年龄
错误原因
date()构造函数需要传入年、月、日三个整数参数,直接传字符串会触发TypeError。today - bday_date返回的是timedelta对象,没有years属性,无法直接获取年份差。
修正代码
name = ['Joes','Piyush','Marcus'] birthdate = ['2000/02/01','2001/12/02','1999/04/02'] from datetime import date, datetime today = date.today() for n, bday_str in zip(name, birthdate): # 将字符串日期解析为date对象,格式匹配代码中的YYYY/MM/DD bday_date = datetime.strptime(bday_str, '%Y/%m/%d').date() # 计算年龄:先取年份差,再判断生日是否已过 age = today.year - bday_date.year if (today.month, today.day) < (bday_date.month, bday_date.day): age -= 1 print(f"Student {n} age is {age} years old.")
关键说明
- 使用
datetime.strptime()解析字符串日期时,格式符要和日期字符串的分隔符、格式完全匹配(比如代码中用%Y/%m/%d对应YYYY/MM/DD)。 - 年龄计算需判断当前日期是否在生日之前,若未过生日则年龄减1,避免提前计算周岁的误差。
内容的提问来源于stack exchange,提问作者adiSF
相关产品推荐
相关产品推荐

