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中測試通過,如果對您有幫助,煩請加關注,並點贊收藏!

 歡迎共同探討、交流學習!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM