如何在python中自动获取今天的日期作为整数

时间:2018-11-17 12:56:02

标签: python-2.7

我想编写一个代码,在该代码中,当用户以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()

1 个答案:

答案 0 :(得分:1)

您无需计算将事物转换为int的麻烦,而是可以计算两个date对象之间的差并获得结果的天数:

...
dob = datetime.date(yyyy, mm, dd)
today = datetime.datetime.today().date()
age_in_days = (today - dob).days
...

此外,您还可以考虑在代码中查看一些其他内容:

  • 您的打印文件正在尝试将stringint连接起来,它将无法正常工作。 您可以投射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()