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))