python-3.x 使用日期和字符串类型值计算年龄

i1icjdpr  于 2023-05-30  发布在  Python
关注(0)|答案(2)|浏览(104)

从API响应中,我将日期存储在列表中。我想使用日期值列表按当前日期计算年龄。日期将以字符串类型出现在列表中。这就是为什么我得到下面的错误。
日期格式-(YYYY-MM-DD)
TypeError:“str”对象不能解释为整数
在这里,我想做的是:

name= ['Joes','Piyush','Marcus']
birthdate=['2000/02/01','2001/12/02','1999/04/02']

from datetime import date
today = date.today()

for n, bday in zip(name, birthdate):
  age = (today - date(bday)).years
  print("Student ", n, "age is ", age, "years old.")
wh6knrhe

wh6knrhe1#

您遇到的错误是因为您试图从日期对象(today)中减去字符串(bday)。要使用日期列表计算年龄,需要在执行减法之前将字符串转换为日期对象。
下面是处理转换并正确计算年龄的修改后的代码:

from datetime import date, datetime

name = ['Joes', 'Piyush', 'Marcus']
birthdate = ['2000/02/01', '2001/12/02', '1999/04/02']

today = date.today()

for n, bday in zip(name, birthdate):
    bday_date = datetime.strptime(bday, '%Y/%m/%d').date()
    age = today.year - bday_date.year - ((today.month, today.day) < (bday_date.month, bday_date.day))
    print("Student", n, "age is", age, "years old.")
pobjuy32

pobjuy322#

from datetime import datetime, date
birthdate=['2000/02/01','2001/12/02','1999/04/02']
today = date.today()
for i in range(len(birthdate)):
    covert_date = datetime.strptime(birthdate[i], '%Y/%m/%d').date()
    differnce = (today - covert_date).days
    age = int(differnce/365)
    day = differnce%365
    print("STUDENTS", i+1, "age is ", age, "years and ",day," days old.")

学生1年龄为23岁零118天。
学生2年龄为21岁零178天。
学生3年龄为24岁零58天。

1.使用strptime()函数将每个字符串date转换为datetime对象。* *' %Y/%m/% d'**参数指定字符串日期的预期格式。
1.在datetime对象上调用.date()方法,只提取日期部分,丢弃时间信息。
1.最后计算年龄并打印出来

相关问题