JS时间分割(将长时间分成每一天或N天)

2020-04-02  本文已影响0人  QRFF

应用场景:一段长时间的参数代入后台查询,用户等待过长,于是分割成每天或者N天,可以快点拿到后台数据进行渲染
比如开始时间是2020/03/02 14:29:46,结束时间是2020/04/01 14:33:46
经过调用formatEveryDay输出则是


QQ截图20200402105120.png
        let ydStart = "2020/03/02 14:29:46";
        let ydEnd = "2020/04/01 14:33:46"
        const startTime = ydStart.split(" ")[0];
        const endTime = ydEnd.split(" ")[0];
        const intervalDay = (getDate(endTime).getTime() - getDate(startTime).getTime()) / (1000 * 60 * 60 * 24)
        if (intervalDay >= 1) {
            console.log(formatEveryDay(startTime,endTime))
            let timeArr = formatEveryDay(startTime, endTime)
            console.log(group(timeArr, 2))
        }
        function formatEveryDay(start, end) {
            let dateList = [];
            let startTimeC = getDate(start);
            let endTimeC = getDate(end);

            while ((endTimeC.getTime() - startTimeC.getTime()) >= 0) {
                let year = startTimeC.getFullYear();
                let month = startTimeC.getMonth() + 1 < 10 ? '0' + (startTimeC.getMonth() + 1) : startTimeC.getMonth() + 1;
                let day = startTimeC.getDate().toString().length == 1 ? "0" + startTimeC.getDate() : startTimeC.getDate();
                dateList.push(year + "/" + month + "/" + day + " " + ydStart.split(" ")[1]);
                startTimeC.setDate(startTimeC.getDate() + 1);
            }
            dateList[dateList.length - 1] = endTime + " " + ydEnd.split(" ")[1]
            return dateList;
        }
        function getDate(datestr) {
            let temp = datestr.split("/");
            let date = new Date(temp[0], temp[1] - 1, temp[2]);
            return date;
        }


        function group(array, subGroupLength) {
            let index = 0;
            let newArray = [];
            while (index < array.length-1) {
                 newArray.push(array.slice(index, index+subGroupLength));
                 index+=1;
            }
            return newArray;
        }
上一篇 下一篇

猜你喜欢

热点阅读