几个问题:年份必须指定为完整整数,即2002,而不是02(或2)。在
你需要检查一下你今年的生日是否过了。在
以下是纠正这两个问题的解决方案。根据您的输入,2002年2月20日和今天的日期2018年7月31日,您的下一个生日是203天。在
另外,请注意,您可以使用timedelta对象的days属性,该属性将四舍五入到203天并避免小数精度。在from datetime import datetime
def get_user_birthday():
year = int(input('When is your birthday? [YY] '))
month = int(input('When is your birthday? [MM] '))
day = int(input('When is your birthday? [DD] '))
birthday = datetime(2000+year,month,day)
return birthday
def calculate_dates(original_date, now):
delta1 = datetime(now.year, original_date.month, original_date.day)
delta2 = datetime(now.year+1, original_date.month, original_date.day)
days = (max(delta1, delta2) - now).days
# alternatively:
# days = max(delta1, delta2).total_seconds() / 60 / 60 /24
return days
bd = get_user_birthday()
now = datetime.now()
c = calculate_dates(bd, now)
print(c)
When is your birthday? [YY] 02
When is your birthday? [MM] 02
When is your birthday? [DD] 20
113