连续五天(周末除外)

时间:2018-08-21 07:06:05

标签: javascript jquery

我编写了一个代码,当一个人拿走的叶子数超过5个工作日时,它会升旗。但是,当我们在中间有周末时,它并不会升起国旗。假设某人在23,24休假,然后在27,28和29休假。由于25和26是周末,因此工具不计算在内。有人可以帮助我如何在这里检查周末日期,并将包含周末日期的值推送为“是”吗?

function PrepareReport(reportData) {
    var vacationData = [];
    var dayValuesStr = '';
    var dayValuesArray = [];
    if ($("#ddlfromYear").val() == $("#ddltoYear").val()) {
        count = parseInt($("#ddltoMonth").val()) - parseInt($("#ddlfromMonth").val());
    }
    else {
        count = 12 - parseInt($("#ddlfromMonth").val()) + parseInt($("#ddltoMonth").val());
    }
    //val.ResourceID         FullName             EnterpriseID       WorkOrder         Domain Totalhours
    vacationData.push(reportData.FullName);
    vacationData.push(reportData.EnterpriseID);
    vacationData.push(reportData.WorkOrder);
    vacationData.push(reportData.Domain);
    if (reportData.IsOffshore == 1) {
        vacationData.push('Offshore');
    }
    else {
        vacationData.push('Onshore');
    }
    vacationData.push(reportData.TOTALHOURS);
    var counter = 0;
    FlagCounterLastVal = 0;
    vacationData.push("No");
    for (var monthNum = 0; monthNum <= count; monthNum++) {
        dayValuesStr = reportData['MONTH' + monthNum];
        if (dayValuesStr) {

            dayValuesArray = dayValuesStr.split(',');
            var countArray = dayValuesArray.length - 1;
            $.each(dayValuesArray, function (key, val) {
                if (val.endsWith('.00'))//round off values
                {
                    if (parseInt(val) == 0) {
                        vacationData.push('-');
                        counter = 0; // resetting counter to 0 for non-consecutive days
                    }
                    else {
                        if (FlagCounterLastVal > 0) {

                            counter = FlagCounterLastVal;
                        }
                        counter++;
                        vacationData.push(parseInt(val));
                        ****if (counter >= 5 && FlagCounterLastVal == 0) {
                            var index = vacationData.indexOf("No");
                            vacationData[index] = "Yes";
                        }****

                        if (key == (countArray) && count > 0) {  // vacation taken at the month ends
                            FlagCounterLastVal = counter;

                        }
                    }

                }
                else {
                    vacationData.push(val);
                }
            });
        }
    }
    return vacationData;
}

2 个答案:

答案 0 :(得分:1)

您可以使用getDay

var day = yourDateObject.getDay();
var isWeekend = (day === 6) || (day === 0);

6 =星期六,0 =星期日

答案 1 :(得分:0)

我不会在这里共享代码,因为它是数据结构,希望您多想一点,然后先尝试一下。如果仍然无法编写代码,那么我会在您的代码中为您提供帮助。

我要做的是有2个数组,两个数组都将被排序,这将有助于搜索。 1.所有周末都有约会。 // WeekendArr 2.留下员工的日期。 // leaveArr

步骤 1.从leaveArr中删除所有weekendArr日期。 2.检查LeaveArr是否有连续的日期大于5或您想要的日期。 3.如果大于5,则为该员工升旗。

现在,您需要确定用于维护员工离职,employeeID和请假标志的数据结构。

希望这足以确定代码。