<!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" /> 开始时间:<input type="text" value="08:30" /><br />
结束日期:<input type="text" value="2012-05-24" /> 结束时间:<input type="text" value="17:30" /><br />
<button id="btn_calc">计算</button>
</div>
<div id="result"></div>
</body>
</html>
<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" /> 开始时间:<input type="text" value="08:30" /><br />
结束日期:<input type="text" value="2012-05-24" /> 结束时间:<input type="text" value="17:30" /><br />
<button id="btn_calc">计算</button>
</div>
<div id="result"></div>
</body>
</html>
//获取开始日期
var StartDate = $("#tb_startDate").val();
//获取开始时间
var StartTime = $("#tb_startTime").val();
//获取结束日期
var EndDate = $("#tb_endDate").val();
//获取结束时间
var EndTime = $("#tb_endTime").val();//将开始日期以-为分割线分割成数组
var sd = StartDate.split("-");
//将开始时间以:为分割线分割成数组
var st = StartTime.split(":");
//将结束日期以-为分割线分割成数组
var ed = EndDate.split("-");
//将结束时间以:为分割线分割成数组
var et = EndTime.split(":"); if (StartDate.length == 0 || StartDate == null) {
alert("开始日期不能为空");
return;
}
if (EndDate.length == 0 || EndDate == null) {
alert("结束日期不能为空");
return;
} //将开始日期转成日期格式
var ds = new Date(sd[0], sd[1], sd[2]);
//将结束日期转成日期格式
var es = new Date(ed[0], ed[1], ed[2]);
//定义间隔时数
var result = 0;
//定义第一天小时数
var hours1 = 0;
//定义最后一天小时数
var hours2 = 0;
//得到间隔天数
var date = (es - ds) / 86400000;
//如果开始时间小于8:30,则把开始时间改为8:30,如果开始时间大于17:30,则把开始时间改为17:30
if ((st[0] + st[1]) < 830) {
st[0] = 8;
st[1] = 30;
} else if ((st[0] + st[1]) > 1730) {
st[0] = 17;
st[1] = 30;
}
//如果结束时间小于8:30,则把结束时间改为8:30,如果结束时间大于17:30,则把结束时间改为17:30
if ((et[0] + et[1]) < 830) {
et[0] = 8;
et[1] = 30;
}
if ((et[0] + et[1]) > 1730) {
et[0] = 17;
et[1] = 30;
}
//如果开始时间小时数小于12点,则小时数为17点减去小时数和午休1小时,否则不用减去午休1小时
if (st[0] < 12) {
hours1 = 17 - st[0] - 1;
} else if (st[0] >= 12) {
hours1 = 17 - st[0];
}
//如果结束时间小时数小于或等于12点,则小时数减去8点,否则就要多减去午休1小时
if (et[0] <= 12) {
hours2 = et[0] - 8;
} else if (et[0] > 12) {
hours2 = et[0] - 8 - 1;
}
//如果间隔天数为1天,则只用计算开始时间的小时数与结束时间的小时数,反之则中间间隔天数*8+开始时间小时数和结束时间小时数
if (date == 1) {
result = ((hours1 + hours2) * 60 + parseInt(et[1]) - parseInt(st[1])) / 60;
} else if (date > 1) {
result = ((hours1 + hours2) * 60 + parseInt(et[1]) - parseInt(st[1])) / 60 + (date - 1) * 8;
}我自己给做出来了,谢谢你们提示