第一种方式: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分