日期:2014-05-16  浏览次数:20401 次

JQuery获取2个时间段的时差
现有4个文本框为开始日期、开始时间、结束日期、结束时间
如:开始日期:2012-05-23 开始时间:08:30
  结束日期:2012-05-24 结束时间:17:30

注:因为是实现请假申请功能,公司现在都是每天上班8个小时,8:30-17:30,所以只求时间段内每天8:30-17:30的时差
如:2012-05-23 16:30到2012-05-24 09:30 那么时差只有2个小时,23号1个小时,24号1个小时。
日期和时间格式如上,我现在想根据这2个时间段求出时差
求大神用JS或JQuery实现!!!

------解决方案--------------------
HTML code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script type="text/javascript">
window.onload = function() {
    document.getElementById('btn_calc').onclick = function() {
        var obj = document.getElementById('demo').getElementsByTagName('input');
        
        var ar_ds = obj[0].value.split('-');
        var ar_ts = obj[1].value.split(':');
        var ds = new Date(ar_ds[0], ar_ds[1] - 1, ar_ds[2], ar_ts[0], ar_ts[1]); 
        
        var ar_de = obj[2].value.split('-');
        var ar_te = obj[3].value.split(':');
        var de = new Date(ar_de[0], ar_de[1] - 1, ar_de[2], ar_te[0], ar_te[1]); 
        
        var result = de.getTime() - ds.getTime();
        
        //开始、结束是否超过24小时,超过减15个小时乘天数
        if (result > 86400000) result -= Math.floor(result / 86400000) * 54000000;
        
        document.getElementById('result').innerHTML = '请假时间:' + (result / 3600000).toFixed(1) + '小时';
    }
}
</script>
</head>

<body>
<div id="demo">
    开始日期:<input type="text" value="2012-05-23" />&nbsp;开始时间:<input type="text" value="08:30" /><br />
    结束日期:<input type="text" value="2012-05-24" />&nbsp;结束时间:<input type="text" value="17:30" /><br />
    <button id="btn_calc">计算</button>
</div>
<div id="result"></div>
</body>
</html>