正常上班时间为周一至周五 8:30-12:00,13:00-17:30,要求选择了请假起始时间与终止时间后,能用JS算出请假的总小时数,此总小时数要求扣除掉非上班时间(周末,常见节假日,还有一天中的非上班时间:如午休的那一个小时)。
解决方案 »
- 新手——Jquery的版本问题
- 点击submit提交进行js验证 之后刷新页面 总是会跳到页面的最上面 有什么办法让页面回到form的位置.
- 表单提交问题?
- JS:未结束的字符串常量,原因是用户输入信息时敲入了回车,怎么处理呢?
- 请高手解答:弹出一个层屏蔽其它所有层,背景能随滚动条加载(急!在线等)
- JavaScript鼠标放上去下面的连接会有阴影出现
- 请问javascript能捕获全局异常吗?
- 哪里有js封装的类似VB中的msgbox,出现是层,而不是alert那样的消息.
- 请问如果读出表单中file文件框的文件内容!
- 后台用encode进行转码,前台抓到的中文字符为空格
- Ajax聊天室,当有消息时,用户输入框内丢失光标,导致用户无法正常输入文字
- 求网页左侧导航栏 鼠标点击后字体变色
http://topic.csdn.net/u/20091015/18/600464fb-c8a0-46ed-8eaa-403a65ca46d3.html
总之
逻辑都差不多的勒
这个是我写的,你可以参考一下http://download.csdn.net/detail/qwerfvcxzasde/3725139
<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>