自動計算請假工時 排除週六週日

/**
 * 請假工時計算
 * starttime 開始時間 "2019-03-28 16:02", endtime 結束時間 "2019-03-29 16:02"
  */
function leaveTime(starttime, endtime) {
    var start = new Date(starttime); //start = Thu Mar 28 2019 16:02:00 GMT+0800 (中國標準時間)
    var end = new Date(endtime);
    var startHour = start.getHours(); //16
    var endHour = end.getHours();
    var startDate = start.setHours(0, 0, 0); //startDate = 1553702400000
    var endDate = end.setHours(0, 0, 0);
    var dayNum = parseInt(Math.abs(endDate - startDate) / 1000 / 60 / 60 / 24);
    var hour = 0;
    if (startHour < 9) {
        startHour = 9;
    }
    //若是開始時間大於18點,
    if (startHour > 18) {
        startDate += 60 * 60 * 24 * 1000;
        starHour = 9;
    }
    if (endHour < 9) {
        endDate -= 60 * 60 * 24 * 1000;
        endHour = 18;
    }
    if (endHour > 18) {
        endHour = 18;
    }
    if (startDate == endDate) {
        var date = new Date(startDate);
        var week = date.getDay();
        if (week != 0 && week != 6) {
            hour = endHour - startHour;
            if (hour > 0 && hour < 4)
                hour = 4;
            if (hour > 4)
                hour = 8;
        }
    } else {
        for (var i = 0; i <= dayNum; i++) {
            var DateTime = startDate + 60 * 60 * 24 * 1000*i
            var date = new Date(DateTime);
            var week = date.getDay();
            if (week != 0 && week != 6) {
                if (DateTime == startDate) {
                    var timehour = 18 - startHour;
                    if (timehour > 0 && timehour <= 4)
                        hour =+ 4;
                    if (timehour > 4)
                        hour =+ 8;
                } else if (DateTime > startDate && DateTime < endDate) {
                    hour += 8;
                } else if (DateTime == endDate){
                    var timehour = endHour - 9;
                    if (timehour > 0 && timehour <= 4)
                        hour += 4;
                    if (timehour > 4)
                        hour += 8;
                }
            }
        }
    }
    return hour / 8.0; 
}
相關文章
相關標籤/搜索