JS获取两个日期之间的所有日期

最近在做数据统计方面的内容,需要操作日期,所以整理了下获取js获取日期一些相关的操作。

getDate()里面JQ获取的是LayDate时间控件的日期值,如:2021-06-25 - 2021-06-30


    /**
     * 初始化日期/获取图表信息
     *
     * @param type string 时间控件LayDate类型
     *
     * @return array [[2021-06-25, 2021-06-26, 2021-06-27, 2021-06-28, 2021-06-29, 2021-06-30],[20210625, 20210626, 20210627, 20210628, 20210629, 20210630]]
     */
    function getDate(type = 'overview')
    {
    
    
        let date;
        switch (type) {
    
    
            case 'daily' :
                date = $('#date-daily').val();
                break;
            case 'rebate' :
                date = $('#date-rebate').val();
                break;
            default:
                date = $('#date-overview').val();
        }

        if (date) {
    
    
            let showDateArr = date.split(' - ');
            let dateArr     = getDateBetween(showDateArr[0], showDateArr[1]);
            return [dateArr, formatDate(dateArr)];
        }

        // 获取近七天日期范围
        let dateArr = getDateRange();

        return [dateArr, formatDate(dateArr)];
    }

    /**
     * 获取指定日期近num的日期
     *
     * @param num integer 日期长度
     *
     * @return array 【2021-06-25, 2021-06-26, 2021-06-27, 2021-06-28, 2021-06-29, 2021-06-30】
     */
    function getDateRange(num = 7) {
    
    
        let myDate   = new Date();
        let date     = myDate.toLocaleDateString().split('/').join('-');
        let dayTime  = 24 * 3600 * 1000;
        let dateTime = new Date(date).getTime() + dayTime;
        let dateArr  = [];

        for (let i = 0; i < num; i++) {
    
    
            let now   = new Date(dateTime -= dayTime);
            let month = (now.getMonth() + 1) / 10 >= 1 ? (now.getMonth() + 1) : '0'  + (now.getMonth() + 1);
            let day   = now.getDate() / 10 >= 1 ? now.getDate() : '0'  + now.getDate();

            dateArr.push([now.getFullYear(), month, day].join('-'));
        }

        return dateArr.reverse();
    }

    /**
     * 将日期格式化成Ymd格式
     *
     * @param dateArr array 待转换日期数组:【2021-06-25, 2021-06-26, 2021-06-27, 2021-06-28, 2021-06-29, 2021-06-30】
     *
     * @return array 【20210625, 20210626, 20210627, 20210628, 20210629, 20210630】
     */
    function formatDate(dateArr)
    {
    
    
        let searchDateDrr = [];
        for (let i = 0; i < dateArr.length; i ++)
        {
    
    
            let tempDateArr  = dateArr[i].split('-');
            searchDateDrr[i] = tempDateArr[0] + tempDateArr[1] + tempDateArr[2]
        }

        return searchDateDrr;
    }

    /**
     * 获取两个日期之间的所有日期
     *
     * @param startTime string 起始日期:2021-06-25
     * @param endTime   string 终止日期:2021-06-30
     *
     * @return array [20210625, 20210626, 20210627, 20210628, 20210629, 20210630]
     */
    function getDateBetween(startTime, endTime)
    {
    
    

        let dateArr = [];
        let i       = 0;

        while(startTime <= endTime){
    
    
            dateArr[i] = startTime;

            let timestamp = new Date(startTime).getTime();
            let nDate = timestamp + (24 * 60 * 60 * 1000);

            let Y = new Date(nDate).getFullYear()+'-';
            let m = (new Date(nDate).getMonth() + 1 < 10) ? '0' + (new Date(nDate).getMonth() + 1) + '-' : (new Date(nDate).getMonth() + 1) + '-';
            let d = (new Date(nDate).getDate() < 10) ? '0' + new Date(nDate).getDate() : new Date(nDate).getDate();

            startTime = Y + m + d;
            i++;
        }

        return dateArr;
    }

Guess you like

Origin blog.csdn.net/qq_37604998/article/details/118355911