编辑代码

function strFormat(str: number) {

    return str < 10 ? `0${str}` : str;
}

function timeStamp(time: number, isQuantum: any = 0) {
    const dates = new Date(time);
    const year = dates.getFullYear();
    const month = dates.getMonth() + 1;
    const date = dates.getDate();
    const day = dates.getDay();
    const hour = dates.getHours();
    const min = dates.getMinutes();
    const days = ["日", "一", "二", "三", "四", "五", "六"];
    return {
        allDate: `${year}/${strFormat(month)}/${strFormat(date)}`,
        date: `${strFormat(year)}-${strFormat(month)}-${strFormat(date)}`, //返回的日期 07-01
        day: `星期${days[day]}`, //返回的礼拜天数  星期一
        hour: `${strFormat(hour)}:${strFormat(min)}${isQuantum ? "" : ":00"}`, //返回的时钟 08:00
    };
}

function initTime1(
    date = "2023.6.27",
    startTime = "09:00:00",
    endTime = "21:00:00",
    timeInterval = 1,
    isQuantum = true,
    // orderTime= [{
    //     startTime,
    //     endTime,
    // }],
    orderTime:any=[{}]
) {
    const time: any = [];
    // const date = timeStamp(Date.now()).allDate;
    const startDate = `${date} ${startTime}`;
    const endDate = `${date} ${endTime}`;
    const startTimeStamp = new Date(startDate).getTime();
    const endTimeStamp = new Date(endDate).getTime();
    let timeStr = 3600 * 1000 * timeInterval;
    const sum = (endTimeStamp - startTimeStamp) / timeStr;
    const count = sum % 2 == 0 ? sum : sum - 1;
    let num = 0;

    for (let i = startTimeStamp; i <= endTimeStamp; i = i + timeStr) {

        if (isQuantum) {
            // console.log("isQuantum:"+isQuantum)
            num++;
            console.log(i + "-->" + num)
            // currentOrderData.forEach((item) => {
            //   if (item.startTime === startTimeStamp) {
            //     time.push({
            //       begin: startTime,
            //       end: endTime,
            //       disable: false,
            //     });
            //   }
            // });
            // console.log("123:"+timeStamp(startTimeStamp).hour)
            console.log("第" + num + "次循环开始:--------" + new Date(i).getHours())
            console.log(time.length + "-条数据-")
            let t1,t2,ot={}
            const index = orderTime.find((ele: any) => {
                t1 = new Date(`${date} ${ele.startTime}`).getTime();
                t2 = new Date(i).getTime();
                console.log("t2:"+timeStamp(t2).hour)
                return t1===t2
            
                // console.log(ele.startTime)
                // return t1 === t2
            })
            let d={...index}

            if (index) {
                // let ot=orderTime[index]
                // console.log(ot)
                let startT = date+" "+d.startTime
                let endT = `${date} ${d.endTime}`
                let startTstamp = new Date(startT).getTime();
                let endTstamp = new Date(endT).getTime();
                let dayDiff = endTstamp - startTstamp

                timeInterval = dayDiff / (3600 * 1000)
                // timeInterval=1
                // console.log("dayDiff:"+dayDiff)
                console.log("timeinterval:" + timeInterval)
                timeStr = 3600 * 1000 * timeInterval
                // i = i + timeStr;
                time.push({
                    begin: d.startTime,
                    end: d.endTime,
                    disable: true,
                });
            }
            else {
                timeInterval=1
                timeStr = 3600 * 1000 * timeInterval
                time.push({
                    begin: timeStamp(i, isQuantum).hour,
                    end: timeStamp(i + timeStr, isQuantum).hour,
                    disable: 0,
                });
                console.log("第" + num + "在else语句中执行:--------" + new Date(i).getHours())
                console.log(time.length + "-条数据-")
            }
            // console.log(index)
            // orderTime.forEach((item: any) => {
            //     let t1 = new Date(`${date} ${item.startTime}`).getTime();
            //     let t2 = new Date(i).getTime();
            //     console.log(t1 + "---" + t2)
            //     if (t1 === t2) {
            //         let startT = `${date} ${item.startTime}`
            //         let endT = `${date} ${item.endTime}`
            //         let startTstamp = new Date(startT).getTime();
            //         let endTstamp = new Date(endT).getTime();
            //         let dayDiff = endTstamp - startTstamp

            //         timeInterval = dayDiff / (3600 * 1000)
            //         // console.log("dayDiff:"+dayDiff)
            //         console.log("timeinterval:" + timeInterval)
            //         i = i + timeStr;
            //         time.push({
            //             begin: item.startTime,
            //             end: item.endTime,
            //             disable: true,
            //         });
            //     }
            // else {

            // time.push({
            //     begin: timeStamp(i, isQuantum).hour,
            //     end: timeStamp(i + timeStr, isQuantum).hour,
            //     disable: 0,
            // });
            // console.log("第" + num + "在else语句中执行:--------" + new Date(i).getHours())
            // console.log(time.length + "-条数据-")
            // }
            // });
            // time.push({
            //     begin: timeStamp(i, isQuantum).hour,
            //     end: timeStamp(i + timeStr, isQuantum).hour,
            //     disable: 0,
            // });
            console.log("第" + num + "在foreach之外执行:--------" + new Date(i).getHours())
            console.log(time.length + "-条数据-")
            // console.log("第" + num + "次循环结束:--------" + new Date(i).getHours())
            console.log(time.length + "-条数据-")
        } else {
            time.push({
                time: timeStamp(i).hour,
                disable: false,
            });
        }
        if (isQuantum && num >= count) return time;
    }
    return time;
}

const
    orderTime = [
        {
            startTime: "10:00:00",
            endTime: "10:30:00",
        },
        {
            startTime: "12:00:00",
            endTime: "12:30:00",
        },
        {
            startTime: "15:30:00",
            endTime: "16:00:00",
        }
    ]
const a = initTime1("2023.6.27", "09:00:00", "21:00:00", 1, true, orderTime);
console.log(a)
// const h = new Date(1687831200000)
// console.log("h:"+h.getHours())

// // console.log("m:"+h.getMinutes())

// const isQuantum=0
// const hour = h.getHours();
// // const min = h.getMinutes();
// const date = timeStamp("10:30:00");
// // // console.log("date:"+date)
// // // console.log(Date.now())
// // console.log(min)
// // console.log(strFormat(0))
// // console.log("time:"+`${strFormat(hour)}:${strFormat(min)}${isQuantum ? "" : ":00"}`)

// // // console.log("min:"+min)
// const startDate = "10:00:00"
// const startTimeStamp = new Date(startDate).getTime();
// console.log(startTimeStamp)

// console.log(strFormat(0))