class date {
    time = 0;
    constructor(...date) {
        //由于js中月份是从0开始,所以如果有月份先减一
        if (date[1]) {
            date[1]--
        }
        this.time = date[0] ? Date.parse(...date) : new Date().getTime();
    }
    /**
     * 获取相隔x天的时间
     */
    diff(day = 0) {
        this.time = this.time + (day * 60 * 60 * 24 * 1000)
        return this
    }
    /**
     * 获取xx天前、xx月前这种格式
     */
    getDiffFormat() {
        var minute = 1000 * 60;
        var hour = minute * 60;
        var day = hour * 24;
        var month = day * 30;
        var year = day * 365;
        var now = new Date().getTime();
        var diffValue = now - this.time;
        var result;
        if (diffValue < 0) {
            return;
        }
        var yearC = diffValue / year;
        var monthC = diffValue / month;
        var weekC = diffValue / (7 * day);
        var dayC = diffValue / day;
        var hourC = diffValue / hour;
        var minC = diffValue / minute;
        if (yearC >= 1) {
            result = "" + parseInt(yearC) + "年前";
        } else if (monthC >= 1) {
            result = "" + parseInt(monthC) + "月前";
        } else if (weekC >= 1) {
            result = "" + parseInt(weekC) + "周前";
        } else if (dayC >= 1) {
            result = "" + parseInt(dayC) + "天前";
        } else if (hourC >= 1) {
            result = "" + parseInt(hourC) + "小时前";
        } else if (minC >= 1) {
            result = "" + parseInt(minC) + "分钟前";
        } else
            result = "刚刚";
        return result;
    }
    /**
     * 获取自定义时间格式
     * @param {String}  format 时间格式
     */
    get(format = "yyyy-M-d h:i:s") {
        let date = new Date(this.time);
        var weeks = ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"];
        var minute = date.getMinutes(),
            second = date.getSeconds(),
            month = date.getMonth() + 1,
            day = date.getDate();
        minute < 10 && (minute = "0" + minute.toString());
        second < 10 && (second = "0" + second.toString());
        month < 10 && (month = "0" + month.toString());
        day < 10 && (day = "0" + day.toString());
        var formatList = {
            "y+": date.getFullYear(), //年份
            "M+": month, //月份 
            "m+": month,
            "d+": day, //日 
            "w+": weeks[date.getDay()], //星期  
            "h+": date.getHours(), //小时   
            "i+": minute, //分   
            "s+": second, //秒   
            "q+": Math.floor((date.getMonth() + 3) / 3), //季度   
            "S": date.getMilliseconds(), //毫秒   
            "timestamp": date.getTime() //时间戳
        };
        for (var item in formatList) {
            if (new RegExp("(" + item + ")").test(format)) {
                format = format.replace(RegExp.$1, formatList[item]);
            }
        }
        return format;
    }
}

使用方式:

console.log(new date().get("yyyy-M-d h:i:s"))                         //2020-12-25 22:11:33

console.log(“获取两天后的时间:” + new date().diff(2).get()) //获取两天后的时间:2020-12-27 22:11:33
console.log(“获取两天前的时间:” + new date().diff(-2).get()) //获取两天前的时间:2020-12-23 22:11:33
console.log(new date(“2020-12-23 22:11:33”).get()) //两天前