通過(guò)生日獲的年齡(JS & moment)

第一種方式:JavaScript實(shí)現(xiàn)

后臺(tái)返回的生日格式是: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 表示出生日期輸入錯(cuò)誤 晚于今天    
    }  
  } 
return age; // 返回周歲年齡
}

第二種方式:React Native-moment實(shí)現(xiàn)

getAge = (birthday) => {  
  const text = moment(birthday, 'YYYY-MM-DD').fromNow();    
  let age = parseInt(text, 10);  // 注意:parseInt(string, radix);第二個(gè)參數(shù)不能省略,否則會(huì)報(bào)Lint錯(cuò)誤
  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

相對(duì)時(shí)間
moment("20111031", "YYYYMMDD").fromNow(); // 5 年前
moment("20120620", "YYYYMMDD").fromNow(); // 4 年前
moment().startOf('day').fromNow();  // 16 小時(shí)前
moment().endOf('day').fromNow();  // 8 小時(shí)內(nèi)
moment().startOf('hour').fromNow();  // 1 分鐘前

日歷時(shí)間
moment().subtract(10, 'days').calendar(); // 2016年12月2日
moment().subtract(6, 'days').calendar();  // 上周二下午4點(diǎn)整
moment().subtract(3, 'days').calendar();  // 上周五下午4點(diǎn)整
moment().subtract(1, 'days').calendar();  // 昨天下午4點(diǎn)整
moment().calendar();  // 今天下午4點(diǎn)整
moment().add(1, 'days').calendar();  // 明天下午4點(diǎn)整
moment().add(3, 'days').calendar();  // 本周四下午4點(diǎn)整
moment().add(10, 'days').calendar();  // 2016年12月22日

多語(yǔ)言支持
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點(diǎn)00分
moment().format('lll');  // 2016年12月12日下午4點(diǎn)00分
moment().format('LLLL'); // 2016年12月12日星期一下午4點(diǎn)00分
moment().format('llll');// 2016年12月12日星期一下午4點(diǎn)00分
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容