我想编写一个代码,在该代码中,当用户以YYYYmmdd格式输入年龄时返回用户的年龄。我已经注意到,当我需要将今天的日期获取为整数但无法将strftime转换为整数时,错误就出在行中。我正在使用python 2.7有帮助吗?谢谢!
import datetime
class User(object):
def __init__(self, full_name, birthday):
self.full_name = full_name
self.birthday = birthday
def calculate_age(self):
"""Return the age"""
yyyy = int(self.birthday[0:4])
mm = int(self.birthday[4:6])
dd = int(self.birthday[6:8])
dob = datetime.date(yyyy, mm, dd)
today = datetime.datetime.today().strftime('%Y%m%d')
today = int(today)
age_in_days = (today - dob)
age_in_years = age_in_days / 365
return int(age_in_years)
def main():
user_enter = raw_input("Enter your b'day:")
User1 = User("susa", user_enter)
print ("your age is" + User1.calculate_age())
if __name__ == "__main__":
main()
答案 0 :(得分:1)
您无需计算将事物转换为int
的麻烦,而是可以计算两个date
对象之间的差并获得结果的天数:
...
dob = datetime.date(yyyy, mm, dd)
today = datetime.datetime.today().date()
age_in_days = (today - dob).days
...
此外,您还可以考虑在代码中查看一些其他内容:
您的打印文件正在尝试将string
与int
连接起来,它将无法正常工作。
您可以投射calculate_age()
结果来解决此问题:
print("your age is " + str(User1.calculate_age()))
您可以使用strptime将您的生日字符串输入转换为datetime
您可以调用date()
将datetime
转换为date
。这样,您就可以避免手动将字符串分成多个部分
dob = datetime.datetime.strptime(self.birthday, '%Y%m%d').date()