jquery简单计算请假总时长

适用环境:请假时长小于等于0.5天的计算小时,否则按1、2、3天直接累加

$(function () {
    var start = "2017-12-21 08:00";
    var end = "2017-12-21 08:00";
    alert(getAllDays(start, end));
});

//请假总时长(4小时为半天,上午上班时间8点,下午下班时间18点,可以按照实际再行更改)
function getAllDays(start, end) {

    var day = 0;

    //小时
    var hours = getAllHours(start, end)
    if (hours <= 4) {
        day = (hours / 8);
    }
    else if (hours > 4 && hours < (4 + 4 + 4)) {
        day = 1;
    }
    else {
        day = (hours / 8);
    }

    if (day < 0) {
        day = 0;
    }
    return day.toFixed(2);
}

//获取总小时数
function getAllHours(start, end) {

    var d1 = new Date(start);
    var d2 = new Date(end);

    var startdate = start.split(' ')[0];
    var enddate = end.split(' ')[0];

    //说明是一天,则只需要判断小时
    if (startdate == enddate) {
        return (d2 - d1) / 1000 / 60 / 60;
    }
        //开始时间大于结束时间
    else if (startdate > enddate) {
        return 0;
    }
    else {
        var sd1 = new Date(startdate);
        var sd2 = new Date(enddate);

        //获取相差天数
        var days = (sd2 - sd1) / 1000 / 60 / 60 / 24;

        //开始时间的小时
        var startHour = start.split(' ')[1].split(':')[0];
        //大于晚上18点,减一天
        if (startHour > 18) {
            days = days - 1;
        }

        //结束时间的小时
        var endHour = end.split(' ')[1].split(':')[0];
        //大于中午14点
        if (endHour >= 14) {
            days = days + 1;
        }

        return days * 8;
    }

}
posted @ 2017-12-22 17:49  开拓丿飞  阅读(1361)  评论(0)    收藏  举报