自定义时间类

2019-04-19  本文已影响0人  Agneszbaby

js获取时间
获取年、月、日、周
格式化日期
获取日期范围
获取历史前N天的时间
获取未来N天的时间

/**
 * 自定义时间类
 */
class TimeClass {
    constructor(date) {
        if (!date || typeof (date) === "string") {
            date = new Date();
        }
        this.date = date;

        this.year = this.getCurrYear();
        this.month = this.getCurrMonth();
        this.day = this.getCurrDay();
        this.week = this.getCurrWeek();
        this.hours = this.getCurrHours();
        this.minutes = this.getCurrMinutes();
        this.seconds = this.getCurrSeconds();
    }

    /**
     * 格式化时间
     * @param date
     * @returns {string}
     */
    timeFormat(date) {
        if (date) {
            this.date = date;
        }
        return `${this.getCurrYear()}-${this.getCurrMonth()}-${this.getCurrDay()}`;
    }

    /**
     * 获取年份
     * @returns {number}
     */
    getCurrYear() {
        return this.date.getFullYear();
    }

    /**
     * 获取月份
     * @returns {*}
     */
    getCurrMonth() {
        let ominth = this.date.getMonth() + 1;
        return ominth > 9 ? ominth : '0' + ominth;
    }

    /**
     * 获取本日
     * @returns {any}
     */
    getCurrDay() {
        let oDay = this.date.getDate();
        return oDay > 9 ? oDay : '0' + oDay;
    }

    /**
     * 获取周几
     * @returns {number}
     */
    getCurrWeek() {
        return this.date.getDay();
    }

    /**
     * 获取时
     * @returns {number}
     */
    getCurrHours() {
        return this.date.getHours();
    }

    /**
     * 获取分
     * @returns {number}
     */
    getCurrMinutes() {
        return this.date.getMinutes();
    }

    /**
     * 获取秒
     * @returns {number}
     */
    getCurrSeconds() {
        return this.date.getSeconds();
    }

    /**
     * 获取本周开始日期
     * @returns {string}
     */
    getCurrWeekStart() {
        var oWeek = this.getCurrWeek();
        oWeek = oWeek > 0 ? oWeek : 7;
        return this.computeTime(-oWeek + 1);
    }

    /**
     * 获取本周结束日期
     * @returns {string}
     */
    getCurrWeekEnd() {
        var oWeek = this.getCurrWeek();
        oWeek = oWeek > 0 ? oWeek : 7;
        return this.computeTime(7 - oWeek);
    }

    /**
     * 获取本周日期范围
     * @returns {string[]}
     */
    getCurrWeekScope() {
        let startTime = this.getCurrWeekStart();
        let endTime = this.getCurrWeekEnd();
        return [startTime, endTime];
    }

    /**
     * 获取本月开始时间
     * @returns {string}
     */
    getCurrMonthStart() {
        this.date.setDate(1);
        console.log(this.date);
        return this.timeFormat();
    }

    /**
     * 获取本月结束日期
     * @returns {string}
     */
    getCurrMonthEnd() {
        var monthFirstDate = new Date(this.year, this.month, 1);
        var oneDay = 1000 * 60 * 60 * 24;
        this.date = new Date(monthFirstDate - oneDay);
        console.log(this.date);
        return this.timeFormat();
    }

    /**
     * 获取本月日期范围
     * @returns {string[]}
     */
    getCurrMonthScope() {
        let startTime = this.getCurrMonthStart();
        let endTime = this.getCurrMonthEnd();
        return [startTime, endTime];
    }

    /**
     * 自定义加减天数
     * @param num
     * @returns {string}
     */
    computeTime(num) {
        this.date.setDate(this.date.getDate() + num);
        return this.timeFormat();
    }


}
上一篇下一篇

猜你喜欢

热点阅读