Python 学习随笔

Python中根据出生日期计算当前年龄

前言

根据输入的出生日期或从身份证号码中截取出生日期后,计算出当前年龄,要求精确到截止系统当前日期的年龄。

实现步骤:

1、导入datetime 库

import datetime
 
2、建立计算年龄的函数,输入参数为符合日期规则的8位出生日期数字
def get_age(birthday):
    # 本函数根据输入的8位出生年月日数据返回截至当天的年龄
    today = str(datetime.datetime.now().strftime('%Y-%m-%d')).split("-")
    # 取出系统当天的年月日数据为列表[年,月,日]
    n_monthandday=today[1] + today[2]
    # 将月日连接在一起
    n_year=today[0]
    # 单独列出当年年份
    r_monthandday=birthday[4:]
    # 取出输入日期的月与日
    r_year=birthday[:4]
    # 取出输入日期的年份
   
    if (int(n_monthandday)>=int(r_monthandday)):
  # 如果月日比系统月日数据要小,刚直接用年份相减就是
        r_age=int(n_year)-int(r_year)
    else:
        r_age=int(n_year)-int(r_year)-1
    return r_age
 # 返回实际年龄
 
3、手工输入出生日期,或者从身份证号码中截取出生日期,首先会检测是否符合日期规则。
 
if __name__ == '__main__':
 
   while True:
        # 手工输入8位出生年月日期,如果在程序中,可以通过身份证号截取出来。
        # 要求输入的出生日期参数是8位符合日期规则的数字,并且不能迟于系统当天日期
        # 否则,将退出提示重新输入数据
        date_str=input("请输入出生年月日(格式:19880919):")
        try:
            Y=int(date_str[:4])
            M=int(date_str[4:6])
            D=int(date_str[6:])
    
    r_date=datetime.date(Y,M,D)
    #  检查输入的日期是否迟于系统当天日期
            if Y>datetime.datetime.now().year or (Y==datetime.datetime.now().year and M>=datetime.datetime.now().month and D>datetime.datetime.now().day):
                print("您输入的日期在系统日期之后,请重新检查后再输入!")
            else:
     # 调用函数
                ages=get_age(date_str)
                print("经过计算,今年年龄是 %s 岁" % ages)
                break
        except:
            print("输入的出生日期有错误,请重新按19880919的格式输入!")
 
4、测试结果
    A、当输入19890919时(正常日期):

  请输入出生年月日(格式:19880919):19890919
  经过计算,今年年龄是 32 岁

   B、当输入19890934时(不符合日期格式):

  请输入出生年月日(格式:19880919):19890934
  输入的出生日期有错误,请重新按19880919的格式输入!
  请输入出生年月日(格式:19880919):

   C、当输入20211225时(在系统日期之后):

  请输入出生年月日(格式:19880919):20211225
  您输入的日期在系统日期之后,请重新检查后再输入!
  请输入出生年月日(格式:19880919):

 以上代码,本人已在Python3.7中测试通过,如果对您有帮助,烦请加关注,并点赞收藏!

 欢迎共同探讨、交流学习!

posted on 2021-12-24 22:07  沧海金龙  阅读(8312)  评论(1编辑  收藏  举报

导航