python 实现年龄计算
方法一:
import datetime
month_days = {
1: 31,
2: 28,
3: 31,
4: 30,
5: 31,
6: 30,
7: 31,
8: 31,
9: 30,
10: 31,
11: 30,
12: 31
}
def is_leap_year(year):
"""
判断是否闰年
:param year:
:return:
"""
if year % 400 == 0 or year % 40 == 0 or year % 4 == 0:
return True
else:
return False
def minus_result(nowadays, birthday, mode=False):
y = nowadays.year - birthday.year
m = nowadays.month - birthday.month
d = nowadays.day - birthday.day
if d < 0:
if birthday.month == 2:
if is_leap_year(birthday.year):
month_days[2] = 29
d += month_days[birthday.month]
m -= 1
if m < 0:
m += 12
y -= 1
if mode is False:
if y == 0:
if m == 0:
return f'{d}天'
else:
return f'{m}月{d}天'
else:
return f'{y}岁{m}月{d}天'
else:
return (nowadays - birthday).days
def calculate_age(year=None, month=None, day=None, mode=False):
"""
获取年龄
model=False 返回格式 年月日
model=True 返回格式 出生总天数
:param year: 出生年
:param month: 出生月
:param day: 出生日
:param mode: 计算模式 True or False
:return:
"""
birthday = datetime.date(year, month, day)
nowadays = datetime.date.today()
return minus_result(nowadays, birthday, mode=mode)
if __name__ == '__main__':
age = calculate_age(1990, 1, 1)
days = calculate_age(1990, 1, 1, mode=True)
print(f'你的年龄为:{age} 共 {days}天')
方法二:
import datetime
def calculate_age(birthday):
"""
计算年龄 周岁
:param birthday:
:return:
"""
today = datetime.date.today()
return today.year - birthday.year - ((today.month, today.day) < (birthday.month, birthday.day))
birthday = datetime.date(2010, 9, 3)
print(calculate_age(birthday))