通过生日获的年龄(JS & moment)

第一种方式:JavaScript实现

后台返回的生日格式是:1995-12-21
getAge = (birthday) => {  
  let age;  
  const birthdayArr = birthday.split('-');  
  const birthdayYear = birthdayArr[0];  
  const birthdayMonth = birthdayArr[1];  
  const birthdayDay = birthdayArr[2];  
  const today = new Date();  
  const nowYear = today.getFullYear();  
  const nowMonth = today.getMonth() + 1;  
  const nowDay = today.getDate();  
  if (nowYear === birthdayYear) {    
    age = 0; // 同年 则为0岁  
  } else {    
    const ageDiff = nowYear - birthdayYear; // 年之差  
    if (ageDiff > 0) {     
     if (nowMonth === birthdayMonth) {       
       const dayDiff = nowDay - birthdayDay; // 日之差
       if (dayDiff < 0) {         
         age = ageDiff - 1;       
       } else {          
        age = ageDiff;        
       }     
      } else {       
       const monthDiff = nowMonth - birthdayMonth; // 月之差        
       if (monthDiff < 0) {         
         age = ageDiff - 1;        
       } else {          
         age = ageDiff;        
       }     
     }    
    } else {     
     age = '未知'; // 返回-1 表示出生日期输入错误 晚于今天    
    }  
  } 
return age; // 返回周岁年龄
}

第二种方式:React Native-moment实现

getAge = (birthday) => {  
  const text = moment(birthday, 'YYYY-MM-DD').fromNow();    
  let age = parseInt(text, 10);  // 注意:parseInt(string, radix);第二个参数不能省略,否则会报Lint错误
  if (isNaN(age)) {    
    age = '未知'; 
  } 
   return age;
}
日期格式化
moment().format('MMMM Do YYYY, h:mm:ss a'); // 十二月 12日 2016, 4:00:55 下午
moment().format('dddd');  // 星期一
moment().format("MMM Do YY");  // 12月 12日 16
moment().format('YYYY [escaped] YYYY');  // 2016 escaped 2016
moment().format();  // 2016-12-12T16:00:55+08:00

相对时间
moment("20111031", "YYYYMMDD").fromNow(); // 5 年前
moment("20120620", "YYYYMMDD").fromNow(); // 4 年前
moment().startOf('day').fromNow();  // 16 小时前
moment().endOf('day').fromNow();  // 8 小时内
moment().startOf('hour').fromNow();  // 1 分钟前

日历时间
moment().subtract(10, 'days').calendar(); // 2016年12月2日
moment().subtract(6, 'days').calendar();  // 上周二下午4点整
moment().subtract(3, 'days').calendar();  // 上周五下午4点整
moment().subtract(1, 'days').calendar();  // 昨天下午4点整
moment().calendar();  // 今天下午4点整
moment().add(1, 'days').calendar();  // 明天下午4点整
moment().add(3, 'days').calendar();  // 本周四下午4点整
moment().add(10, 'days').calendar();  // 2016年12月22日

多语言支持
moment().format('L');  // 2016-12-12
moment().format('l');  // 2016-12-12
moment().format('LL');  // 2016年12月12日
moment().format('ll');  // 2016年12月12日
moment().format('LLL');  // 2016年12月12日下午4点00分
moment().format('lll');  // 2016年12月12日下午4点00分
moment().format('LLLL'); // 2016年12月12日星期一下午4点00分
moment().format('llll');// 2016年12月12日星期一下午4点00分

你可能感兴趣的:(通过生日获的年龄(JS & moment))