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

使用字符串类型日期计算年龄时出现TypeError错误的技术咨询

问题解决:字符串日期转日期对象并计算年龄

错误原因

  1. date() 构造函数需要传入年、月、日三个整数参数,直接传字符串会触发 TypeError。
  2. 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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 19:37:14