JavaScript根據出生日期計算年齡

admin發表於2017-11-16

根據出生日期計算出年齡這是非常簡單的事情,通過程式碼實現需要進行一些列計算。

下面通過程式碼例項介紹一下如何實現此功能。

程式碼例項如下:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
function parseDate(str){
  if(str.match(/^\d{4}[\-\/\s+]\d{1,2}[\-\/\s+]\d{1,2}$/)){
    return new Date(str.replace(/[\-\/\s+]/i,'/'));
  }
  else if(str.match(/^\d{8}$/)){
    return new Date(str.substring(0,4)+'/'+str.substring(4,6)+'/'+str.substring(6));
  }
  else{
    return ('時間轉換髮生錯誤!');
  }
}
function GetAgeByBrithday(birthday){
  var age=-1;
  var today=new Date();
  var todayYear=today.getFullYear();
  var todayMonth=today.getMonth()+1;
  var todayDay=today.getDate();
   
  if(parseDate(birthday)!='時間轉換髮生錯誤!'){
    birthday=parseDate(birthday);
    birthdayYear=birthday.getFullYear();
    birthdayMonth=birthday.getMonth();
    birthdayDay=birthday.getDate();
    if(todayYear-birthdayYear<0){
      alert("出生日期選擇錯誤!");
    }else{
      if(todayMonth*1-birthdayMonth*1<0){
        age = (todayYear*1-birthdayYear*1)-1;
      }else{
        if(todayDay-birthdayDay>=0){
          age = (todayYear*1-birthdayYear*1);
        }else{
          age = (todayYear*1-birthdayYear*1)-1;
        }
      }
    }
    return age*1;
  }
  else{
    return -1;
  }
}
console.log(GetAgeByBrithday("1983-8-3"))

上面的程式碼實現了計算功能,下面介紹一下它的實現過程。

一.程式碼註釋:

(1).function parseDate(str){},將時間日期字串轉換為Date物件。

(2).if(str.match(/^\d{4}[\-\/\s+]\d{1,2}[\-\/\s+]\d{1,2}$/)){},判斷是否能夠實現匹配,也就是時間日期字串是否能夠滿足一定的格式,比如"1983-8-3"或者"1983/8/3"這種格式。

(3).return new Date(str.replace(/[\-\/\s+]/i,'/')),返回Date物件,str.replace(/[\-\/\s+]/i,'/')進行字串格式轉換,將"1983-8-3"替換成"1983/8/3",因為前者作為Date()建構函式引數時,在低版本IE瀏覽器下不相容。

(4).else if(str.match(/^\d{8}$/)){

  return new Date(str.substring(0,4)+'/'+str.substring(4,6)+'/'+str.substring(6));

},判斷是否符合19830803這種格式,然後進行提取相應的部分,然後連線起來。

(5).else{

  return ('時間轉換髮生錯誤!');

},如果不滿足上面兩種情況,就返回這麼一個提示字串。

(6).function GetAgeByBrithday(birthday){},此方法實現計算功能,引數是時間日期字串。

(7).var age=-1,宣告一個變數並賦初值。

(8).var today=new Date(),建立一個時間日期物件。

(9).var todayYear=today.getFullYear(),獲取年份。

(10).var todayMonth=today.getMonth()+1,獲取月份,因為一月份返回0,所以要加1。

(11).var todayDay=today.getDate(),獲取天。

(12).if(parseDate(birthday)!='時間轉換髮生錯誤!'){},判斷是否能夠進行轉換。

(13).var birthday=parseDate(birthday),獲取時間日期物件。

(14).birthdayYear=birthday.getFullYear(),獲取年份。

(15).birthdayMonth=birthday.getMonth()+1,獲取月份。

(16).if(todayYear-birthdayYear<0){

   alert("出生日期選擇錯誤!");

},如果當前日期小於出生日期,當然要報錯。

(17).else{

  if(todayMonth*1-birthdayMonth*1<0){

    age = (todayYear*1-birthdayYear*1)-1;

  }else{

    if(todayDay-birthdayDay>=0){

      age = (todayYear*1-birthdayYear*1);

    }else{

      age = (todayYear*1-birthdayYear*1)-1;

    }

  }

},上面的程式碼進行一些列的計算,很簡單,不用多介紹。

二.相關閱讀:

(1).match方法參閱正規表示式match()一章節。

(2).Date()建構函式參閱JavaScript Date()建構函式引數一章節。 

(3).replace方法參閱正規表示式replace()一章節。

(4).substring方法參閱JavaScript substring()一章節。

相關文章