使用Moment.js查找日期(不包括假日),计算工作日,但最终日期不能为周末

时间:2019-02-07 21:38:28

标签: jquery momentjs

我创建了一个日历,该日历应该允许Legal客户计算何时需要提交特定文档。业务规则并不难,但我一直发现自己在圈子里转转。

“日历”点击必须采用选定的日期,并且;

  • 添加特定于“文档类型”的天数以找到截止日期(计算周末)
  • 截止日期不能为假期
  • 到期日不能为周末,如果是星期一,则星期一成为到期日(必须再次检查“假期”)

我已经掌握了以下内容,但我似乎陷入了循环

   var tempDueDate;
   var DueDate;

   var holidays = ["2019-06-24, 2019-07-01"];

   //targetDate is the Date from the DatePicker
   //Days = the number of Days specific to each Document Type, 15 for this ex.
   tempDueDate = moment(targetDate).add(days, "days").format("YYYY-MM-DD");

   GetDueDateFromHolidaysAndWeekends(tempDueDate, holidays);


   function GetDueDateFromHolidaysandWeekends(tempDueDate, holidays) {

    var final = true;

    var Checked = CheckIfIsHoliday(tempDueDate, holidays);

    var summaryDueDate = $("#summaryDueDate");

    if (Checked === false) {
        //This means tempDueDate is NOT a holiday OR a Weekend
        summaryDueDate.html(DueDate);
     } else
     {
        while (Checked === true) {
          tempDueDate = moment(tempDueDate).add(1, "days").format("YYYY-MM-DD");
          Checked = CheckIfIsHoliday(tempDueDate, holidays);
       }

       summaryDueDate.html(DueDate);

       }

       function CheckIfIsHoliday(tempDueDate, holidays) {

       var bool;
       //This does NOT appear to be able to determine Weekdays
       if (moment(tempDueDate).day(7) || moment(tempDueDate).day(6))
       {
          bool = true;
       }

       if (bool !== true) {
          //check if this day is a Holiday, if it is, start over
          if (jQuery.inArray(tempDueDate, holidays) === -1) {
              bool = false;
              DueDate = tempDueDate;
              console.log(DueDate);
           } else {
              bool = true;
           }

       }
                return bool;
     }
    }

在此示例中,选择6月1日将返回6月16日,但这是一个周末,因此返回的日期应为17日。选择6月7日返回6月23日,这是一个周末,因此应在6月24日抵消,但这是一个假期,因此应在6月25日抵消。

任何提示将不胜感激。

0 个答案:

没有答案