问题描述
正常上班时间为周一至周五8:30-12:00,13:00-17:30,要求选择了请假起始时间与终止时间后,能用JS算出请假的总小时数,此总小时数要求扣除掉非上班时间(周末,常见节假日,还有一天中的非上班时间:如午休的那一个小时)。
解决方案
解决方案二:
这里有个供参考:http://topic.csdn.net/u/20110428/16/f5722344-be15-4405-9bf3-d21a963de804.html
解决方案三:
以及这个http://topic.csdn.net/u/20091015/18/600464fb-c8a0-46ed-8eaa-403a65ca46d3.html
解决方案四:
想的太多了。。。有的你考虑的了。。。当初我做请假系统的时候就这个考虑了好久。。
解决方案五:
给点建设性意见啊,或者贴下你原来的代码引用3楼zsx841021的回复:
想的太多了。。。有的你考虑的了。。。当初我做请假系统的时候就这个考虑了好久。。
解决方案六:
引用4楼cq3000457的回复:
给点建设性意见啊,或者贴下你原来的代码引用3楼zsx841021的回复:想的太多了。。。有的你考虑的了。。。当初我做请假系统的时候就这个考虑了好久。。
我的代码是用c#写的。。也要吗?
解决方案七:
不用了,谢谢。我要JS的引用5楼zsx841021的回复:
引用4楼cq3000457的回复:给点建设性意见啊,或者贴下你原来的代码引用3楼zsx841021的回复:想的太多了。。。有的你考虑的了。。。当初我做请假系统的时候就这个考虑了好久。。我的代码是用c#写的。。也要吗?
解决方案八:
还可以用sql来做的了总之逻辑都差不多的勒
解决方案九:
这个是我写的,你可以参考一下
解决方案十:
<!DOCTYPEhtml><html><head><scriptsrc="jquery.js"></script></head><body><form><divid="start"><span>起始时间:</span><label>年:<inputtype="text"name="year"value=""/></label><label>月:<inputtype="text"name="month"value=""/></label><label>日:<inputtype="text"name="date"value=""/></label><label>小时:<inputtype="text"name="hour"value=""/></label><label>分钟:<inputtype="text"name="minute"value=""/></label></div><divid="end"><span>起始时间:</span><label>年:<inputtype="text"name="year"value=""/></label><label>月:<inputtype="text"name="month"value=""/></label><label>日:<inputtype="text"name="date"value=""/></label><label>小时:<inputtype="text"name="hour"value=""/></label><label>分钟:<inputtype="text"name="minute"value=""/></label></div><inputid="count"type="button"value="Conut"/></form><script>functiongetTime($container,boolen){varyear=$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();returnboolen?newDate(year,month,date,hour,minute):newDate(year,month,date);}functiongetSurplusHours(time){varcurrentHour=time.getHours();if(currentHour<=8){return8;}elseif(currentHour>=17){return0;}elseif(currentHour>=12){return17-currentHour;}else{return17-currentHour-1;}}functiongetPassHours(time){varcurrentHour=time.getHours();if(currentHour<=8){return0;}elseif(currentHour>=17){return8;}elseif(currentHour>=12){returncurrentHour-8-1;}else{returncurrentHour-8;}}$('#count').click(function(){vartimeStart=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;varweek=Math.floor(_week);surplusHours+=week*5*8;if(_week!==week){var_days=days-week*7;if(startDay+_days<6){surplusHours+=_days*8;}elseif(startDay+_days===6){surplusHours+=(_days-1)*8;}else{surplusHours+=(_days-2)*8;}}}alert(surplusHours);});</script></body></html>