正常上班时间为周一至周五 8:30-12:00,13:00-17:30,要求选择了请假起始时间与终止时间后,能用JS算出请假的总小时数,此总小时数要求扣除掉非上班时间(周末,常见节假日,还有一天中的非上班时间:如午休的那一个小时)。

解决方案 »

  1.   

    这里有个供参考:http://topic.csdn.net/u/20110428/16/f5722344-be15-4405-9bf3-d21a963de804.html
      

  2.   

    以及这个
    http://topic.csdn.net/u/20091015/18/600464fb-c8a0-46ed-8eaa-403a65ca46d3.html
      

  3.   

    还可以用sql来做的了
    总之
    逻辑都差不多的勒
      

  4.   


    这个是我写的,你可以参考一下http://download.csdn.net/detail/qwerfvcxzasde/3725139
      

  5.   

    <!DOCTYPE html>
    <html>
    <head>
    <script src="jquery.js"></script>
    </head>
    <body>
    <form>
    <div id="start">
    <span>起始时间: </span>
    <label>年:
    <input type="text" name="year" value=""/>
    </label>
    <label>月:
    <input type="text" name="month" value=""/>
    </label>
    <label>日:
    <input type="text" name="date" value=""/>
    </label>
    <label>小时:
    <input type="text" name="hour" value=""/>
    </label>
    <label>分钟:
    <input type="text" name="minute" value=""/>
    </label>
    </div>
    <div id="end">
    <span>起始时间: </span>
    <label>年:
    <input type="text" name="year" value=""/>
    </label>
    <label>月:
    <input type="text" name="month" value=""/>
    </label>
    <label>日:
    <input type="text" name="date" value=""/>
    </label>
    <label>小时:
    <input type="text" name="hour" value=""/>
    </label>
    <label>分钟:
    <input type="text" name="minute" value=""/>
    </label>
    </div>
    <input id="count" type="button" value="Conut"/>
    </form>
    <script>
    function getTime($container, boolen){
    var year = $container.find('[name=year]').val(),
    month = $container.find('[name=month]').val() - 1,
    date = $container.find('[name=date]').val(),
    hour = $container.find('[name=hour]').val(),
    minute = $container.find('[name=minute]').val();
    return boolen ? new Date(year, month, date, hour, minute) : new Date(year, month, date);
    }
    function getSurplusHours(time){
    var currentHour = time.getHours();
    if(currentHour <= 8){
    return 8;
    }else if(currentHour >= 17){
    return 0;
    }else if(currentHour >= 12){
    return 17 - currentHour;
    }else{
    return 17 - currentHour - 1;
    }
    }
    function getPassHours(time){
    var currentHour = time.getHours();
    if(currentHour <= 8){
    return 0;
    }else if(currentHour >= 17){
    return 8;
    }else if(currentHour >= 12){
    return currentHour - 8 - 1;
    }else{
    return currentHour - 8;
    }
    }
    $('#count').click(function(){
    var timeStart = getTime($('#start')),
    timeEnd = getTime($('#end')),
    startDay = timeStart.getDay(),
    endDay = timeEnd.getDay(),
    days = Math.floor((timeEnd.getTime() - timeStart.getTime()) / (1000 * 60 * 60 * 24)),
    surplusHours = 0;
    if(days === 0){
    surplusHours = getSurplusHours(getTime($('#start'), true)) + 8 - getSurplusHours(getTime($('#end'), true));
    }else{
    surplusHours += getSurplusHours(getTime($('#start'), true));
    surplusHours -= getSurplusHours(getTime($('#end'), true));
    var _week = days / 7;
    var week = Math.floor(_week);
    surplusHours += week * 5 * 8;
    if(_week !== week){
    var _days = days - week * 7;
    if(startDay + _days < 6){
    surplusHours += _days * 8;
    }else if(startDay + _days === 6){
    surplusHours += (_days - 1) * 8;
    }else{
    surplusHours += (_days - 2) * 8;
    }
    }
    }
    alert(surplusHours);
    });
    </script>
    </body>
    </html>