我希望该程序可以确定一个人的年龄。我希望它通过从当前日期减去一个人的生日来做到这一点。它可以正确设置月份和日期,但是年份并不完全正确。例如,当我输入此日期时,它将说该人是16岁。实际上,由于16岁生日还没到,他们应该15岁。我该如何解决?
from datetime import datetime
birth = datetime(2004, 12, 25)
current = datetime.utcnow() # July 27th, 2020 at the time of writing
year_answer = current.year - birth.year
month_answer = current.month - birth.month
day_answer = current.day - birth.day
if month_answer < 1:
month_answer += 12
print(year_answer, month_answer, day_answer)
答案 0 :(得分:1)
from datetime import date
def calculateAge(birthDate):
today = date.today()
age = today.year - birthDate.year - ((today.month, today.day) < (birthDate.month, birthDate.day))
return age
print(calculateAge(date(1997, 1, 8)), "years")
答案 1 :(得分:1)
您可以这样做。
from datetime import datetime
birth = datetime(2004, 12, 25)
current = datetime.utcnow() # July 27th, 2020 at the time of writing
year_answer = current - birth
#From here its just math
years = int(year_answer.days/365.25)
months = int((year_answer.days/30.4167)-(years*12))
days = int((year_answer.days)-(months*30.4167)-(years*12*30.4167))
print(years,'years', months,'months', days,'days','old')
答案 2 :(得分:1)
如果当前日期低于生日,则月份也会遇到相同的问题。在这些情况下,您只需要校正下一个更高的单位即可。您几乎可以使用if语句到达那里。现在,您只需要调整年份和月份即可。
from datetime import datetime
birth = datetime(2004, 12, 29)
current = datetime.utcnow() # July 27th, 2020 at the time of writing
day_answer = current.day - birth.day
month_answer = current.month - birth.month
year_answer = current.year - birth.year
if day_answer<0:
month_answer-=1
day_answer+=31
if month_answer < 0:
year_answer -=1
month_answer += 12
print(year_answer, month_answer, day_answer)
不过,有一个问题。如果当前月份有31天,则应在该天加上31。如果只有30天或28天,则应添加30天或28天。是否有一种简便的方法来从日期时间中获取正确的数字?
答案 3 :(得分:0)
当您在月份中加上12时,您应该从年份中减去1以进行补偿,因为1年是12个月。您也应该在当天做类似的事情。
if month_answer < 1:
month_answer += 12
year_answer -= 1