[英]calculate age in days with python
作為課程的一部分,我必須以天為單位定義年齡。 前 3 個部分有效,但最后一個部分無效。 因為我必須在前一個函數中導入兩個日期(age_in_days)和今天的日期。 誰能解釋這是如何工作的
import datetime
def days_in_month(year, month):
"""
Inputs:
year - an integer between datetime.MINYEAR and datetime.MAXYEAR
representing the year
month - an integer between 1 and 12 representing the month
Returns:
The number of days in the input month.
"""
if month==12:
return 31
else:
date1 = datetime.date(year, month, 1)
date2 = datetime.date(year, month+1, 1)
difference = date2 - date1
return(difference.days)
#print(days_in_month(2012,2))
def is_valid_date(year, month, day):
"""
Inputs:
year - an integer representing the year
month - an integer representing the month
day - an integer representing the day
Returns:
True if year-month-day is a valid date and
False otherwise
"""
if datetime.MINYEAR<=year<=datetime.MAXYEAR and 1<=month<=12 and 1<=day<= days_in_month(year, month):
return True
else:
return False
#print(is_valid_date(2012,10,21))
def days_between(year1, month1, day1, year2, month2, day2):
"""
Inputs:
year1 - an integer representing the year of the first date
month1 - an integer representing the month of the first date
day1 - an integer representing the day of the first date
year2 - an integer representing the year of the second date
month2 - an integer representing the month of the second date
day2 - an integer representing the day of the second date
Returns:
The number of days from the first date to the second date.
Returns 0 if either date is invalid or the second date is
before the first date.
"""
date1=datetime.date(year1,month1,day1)
date2=datetime.date(year2,month2,day2)
if is_valid_date(year1,month1,day1) and is_valid_date(year2,month2,day2)and (date1<date2):
difference=date2-date1
#print(difference.days)
return difference.days
else:
return 0
def age_in_days(year, month, day):
"""
Inputs:
year - an integer representing the birthday year
month - an integer representing the birthday month
day - an integer representing the birthday day
Returns:
The age of a person with the input birthday as of today.
Returns 0 if the input date is invalid or if the input
date is in the future.
"""
todays_date=datetime.date.today()
if is_valid_date(year, month,day) and (age_in_days<todays_date):
return days_between(age_in_days(year,month,day),todays_date(year,month,day))
else:
return 0
這將返回 2 個日期之間的天數,特別是出生日期和當前日期之間的天數:
import datetime
birthday = datetime.date(1990,2,10) #datetime.date(YEAR,MONTH,DAY)
now = datetime.date.today()
delta = now - birthday
print(delta.days)
age_in_days
是一個函數。 它不能與作為對象的todays_date
進行比較。 同樣,在 return 聲明中todays_date
不能這樣傳遞。
def age_in_days(year,month,day):
todays_date = dt.date.today()
birthdate = dt.date(year,month,day)
if is_valid(year,month,day) and (todays_date>birthdate):
return days_in_between(todays_date.year,todays_date.month,todays_date.day,birthdate.year,birthdate.month,birthdate.day)
else:
return 0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.