1、自己写函数计算(比较麻烦)
//时间推算函数(day:前后n天 0为当天,正值表示未来n天,负值表示过去n天;fmt:时间格式;time:时间(默认当天))
function recentTime(day, fmt, time) {
//获取当前时间的毫秒值
let now = (time ? new Date(time) : new Date()).getTime();
// 获取前后n天时间
let recent = new Date(now + day * 24 * 60 * 60 * 1000);
// key:正则匹配表达式,value:对应的时间、日期
let fmtObj = {
'M+': recent.getMonth() + 1, //月份
'd+': recent.getDate(), //日
'h+': recent.getHours(), //时
'm+': recent.getMinutes(), //分
's+': recent.getSeconds(), //秒
};
// 获取匹配年份替换
if (/(y+)/.test(fmt)) {
//RegExp.$1 匹配结果,替换成对应的长度。如:yyyy就替换成整个年份2021,yy就替换成后两位21,以此类推
fmt = fmt.replace(RegExp.$1, (recent.getFullYear() + '').substr(4 - RegExp.$1.length));
}
for (let key in fmtObj) {
if (new RegExp(`(${key})`).test(fmt)) {
//日期,时、分、秒替换,判断fmt是否需要补0,如:yyyy-M-d h:m:s 不补0,yyyy-MM-dd hh:mm:ss 则自动补0
fmt = fmt.replace(
RegExp.$1,
RegExp.$1.length == 1
? fmtObj[key]
: ('00' + fmtObj[key]).substr(('' + fmtObj[key]).length),
);
}
}
return fmt;
}
2、引用moment 函数功能强大简单,moment 的其他用法自行百度(推荐)
引入moment
import moment from 'moment';
参数说明:day:推算的日期,不填则默认为当前日期,e:推算的前后天数,正值表示未来的第n天,负值表示之前的第n天
function recentTime(day, e) {
let fmt = moment(day).subtract(e, 'days').format('YYYY-MM-DD');
return fmt;
}