应用场景:一段长时间的参数代入后台查询,用户等待过长,于是分割成每天或者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;
}
网友评论