同一天多个随机时间段合并

1:组件需求


时间段随机添加

二:合并交集时间段。代码

timeSlotConfirm() {

      const timeSlotItem = this.timeSlotForm.timeSlotItem.join("-");

      const currentSlotItem = this.timeSlotForm.timeSlotItem;

      //  周一添加

      if (this.addTimeSlotFlag == "one") {

        // 已选

        if (this.form.one.length === 0) {

          this.form.one.push(timeSlotItem);

          this.mondayTimeList=this.form.one

        } else {

          this.timeResult = [];

          this.joinTime(

            this.form.one,

            currentSlotItem

          );

          this.form.one = this.timeResult

          this.mondayTimeList = this.form.one

        }

      }

}

// 时间段合并

    compareTime(t1, t2, t3, t4) {

      let d = new Date();

      let ft1 = d.setHours(

        t1.split(":")[0],

        t1.split(":")[1],

        t1.split(":")[2]

      );

      let ft2 = d.setHours(

        t2.split(":")[0],

        t2.split(":")[1],

        t2.split(":")[2]

      );

      let ft3 = d.setHours(

        t3.split(":")[0],

        t3.split(":")[1],

        t3.split(":")[2]

      );

      let ft4 = d.setHours(

        t4.split(":")[0],

        t4.split(":")[1],

        t4.split(":")[2]

      );

      if (ft3 >= ft1 && ft3 <= ft2 && ft4 >= ft2) {

        return {

          t: t1 + "-" + t4,

          flag: false,

        };

      } else if (ft1 >= ft3 && ft1 <= ft4 && ft2 >= ft4) {

        return {

          t: t3 + "-" + t2,

          flag: false,

        };

      } else if (ft3 > ft2 || ft1 > ft4) {

        return {

          t: t3 + "-" + t4,

          flag: true,

        };

      } else if (ft1 >= ft3 && ft2 <= ft4) {

        return {

          t: t3 + "-" + t4,

          flag: false,

        };

      } else if (ft1 <= ft3 && ft2 >= ft4) {

        return {

          t: t1 + "-" + t2,

          flag: false,

        };

      }

    },

    // 合并交集时间段

    joinTime(data, currentArr) {

      let tempArr = data.slice(0);

      while (tempArr.length) {

        let item = tempArr.shift();

        const itemArr = item.split("-");

        const time = this.compareTime(

          itemArr[0],

          itemArr[1],

          currentArr[0],

          currentArr[1]

        );

        if (tempArr.length) {

          if (time.flag) {

            this.timeResult.push(item);

            this.joinTime(tempArr, time.t.split('-'));

            return false

          } else if (!time.flag) {

            this.joinTime(tempArr, time.t.split('-'));

            return false

          }

        } else {

          if (time.flag) {

            this.timeResult.push(item, time.t);

          } else if (!time.flag) {

            this.timeResult.push(time.t);

          }

        }

      }

    },

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容