年龄计算
年齡計(jì)算得出周歲,不精確算出月日,即只顯示幾歲
/*** 根據(jù)生日得到年齡* @param {String | Date | Number} [birthday] 生日* @returns {Number}*/ function getAgeByBirth(birthday){let age;const nowDate = new Date();const birthDate = birthday ? new Date(birthday) : new Date();const nowY = nowDate.getFullYear();const birthY = birthDate.getFullYear();const nowM = nowDate.getMonth();const birthM = birthDate.getMonth();const nowD = nowDate.getDate();const birthD = birthDate.getDate();if (nowDate.getTime() < birthDate.getTime()) {age = 0;} else {if (nowY == birthY) {age = 0;} else {age = nowY - birthY;if (nowM < birthM) {age--;} else if (nowM == birthM && nowD < birthD) {age--;}}}return age; }計(jì)算歲數(shù)精確到天
最近遇到需求要計(jì)算出不足兩歲的得出一歲幾月,不足一歲的得出幾月幾天,不足月的得出幾天。由于計(jì)算天數(shù)涉及到獲取前一月份天數(shù),月份天數(shù)涉及到是否閏年的2月,以及跨年等情況。計(jì)算邏輯復(fù)雜,因此借助moment庫進(jìn)行處理。
import moment from 'moment'; /*** 根據(jù)生日得到年齡* @param {Moment|String|Number|Date|Array} [birth] 生日* @returns {String}*/ function getAgeByBirth(brith) {if (!brith) return '';const duration = moment.duration(moment().diff(brith));const years = duration.years();const months= duration.months();const days= duration.days();let result = '';if (years > 1) {result = years + '歲';} else {if (years === 1) {result = years + '歲' + months + '月';} else if (months > 0) {result = months + '月' + days + '天';} else {result = days + '天';}}return result; }總結(jié)
- 上一篇: 了不起的盖茨比读后感---Java程序员
- 下一篇: 卸载WPS后,原office出现各种问题