js計算工時,去週末,設置上下班時間

 要設置9~18點上下班,中午一小時午休,刨掉週六日,網上找了找沒找到合適的方法,本身寫了一個javascript

<script type="text/javascript">
    function countSc(str1,str2){
        if(!str1 || !str2){return 0;}
        //開始構造兩個日期對象
        var datetime1 = new Date(), datetime2 = new Date();

        datetime1.setFullYear(str1.substr(0,4),str1.substr(5,2)-1,str1.substr(8,2));
        datetime2.setFullYear(str2.substr(0,4),str2.substr(5,2)-1,str2.substr(8,2));

        datetime1.setMilliseconds(0);
        datetime2.setMilliseconds(0);

        datetime1.setHours(str1.substr(11,2),0,0);
        datetime2.setHours(str2.substr(11,2),0,0);

        if(datetime1.getDay() == 0 || datetime1.getDay() == 6){
            datetime1.setDate(datetime1.getDate() - 1);
            datetime1.setHours(23,0,0);
        }
        if(datetime1.getDay() == 0 || datetime1.getDay() == 6){
            datetime1.setDate(datetime1.getDate() - 1);
            datetime1.setHours(23,0,0);
        }
        if(datetime2.getDay() == 0 || datetime2.getDay() == 6){
            datetime2.setDate(datetime2.getDate() + 1);
            datetime2.setHours(0,0,0);
        }
        if(datetime2.getDay() == 0 || datetime2.getDay() == 6){
            datetime2.setDate(datetime2.getDate() + 1);
            datetime2.setHours(0,0,0);
        }
        var travelHours = 0;

        var datetime3 = datetime1;
        for(var i = 0;i < 60; i++){
            var sd = datetime1.getDate(),ed = datetime2.getDate();
            if(sd == ed - 1){
                break;
            }
            datetime1.setDate(datetime1.getDate() + 1);
            if(datetime1.getDay() > 0 && datetime1.getDay() < 6){
                travelHours += 8;
            }
        }

        if (parseInt(datetime3.getHours()) <= 9) {
            travelHours += 8;
        }else {
            if (parseInt(datetime3.getHours())<= 12) {
                travelHours += 12 - parseInt(datetime3.getHours()) + 5;
            }else {
                if (parseInt(datetime3.getHours()) <= 18) {
                    travelHours += 18 - parseInt(datetime3.getHours());
                }
            }
        }
        if (parseInt(datetime2.getHours()) >= 18) {
            travelHours += 8;
        }else {
            if (parseInt(datetime2.getHours()) >= 13){
                travelHours += 3 + parseInt(datetime2.getHours()) - 13;
            }else {
                if (parseInt(datetime2.getHours()) >= 9) {
                    travelHours += parseInt(datetime2.getHours()) - 9;
                }
            }
        }
        return travelHours;

    }
</script>
相關文章
相關標籤/搜索