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

js判断休息时间啊 大神看过来啊
这是一个计算调休时间的表单---表单有开始时间和结束时间,但输入完成时给出总时长,一天算8小时,不足一天的与上班时间及下班时间比较上班9:10下班18:00,中午12-13休息不算在内,但是如果上班中途休息的就需要和上班时间及下班时间比较了!目前写了部分但是有的时间可以有的就是错的求救啊
//上班时间
var startwork=" 09:10:00";
var endwork=" 18:00:00";//下班时间
var endmoon=" 12:00:00";//中午下班时间
var startnoon=" 13:00:00";//下午上班时间
var hour=0;
var days=0;
               //获取页面的开始时间及结束时间
var staDate =new Date($(dialog).find("#attStaDate").val().replace(/-/g, "/"));
var endDate =new Date($(dialog).find("#attEndDate").val().replace(/-/g, "/"));
var ed=$(dialog).find("#attEndDate").val().replace(/-/g, "/")
var sd=$(dialog).find("#attStaDate").val().replace(/-/g, "/");
var startDay=sd.substring(0,sd.length-9);
var endDay=ed.substring(0,ed.length-9);
var hours=0;
var min=0;
var mn=0;
//判断当天是否到达公司
if((new Date(startDay+startwork)).getTime()-staDate.getTime()>0){
//判断时间是否在午休前
hours=0;
}else if((new Date(startDay+endmoon)).getTime()-staDate.getTime()>0){
days=(new Date(startDay+endmoon)).getTime()-staDate.getTime();
hours=Math.floor(days/(3600*1000));
alert(hours);
min=Math.floor(days/(60*1000));
alert(min);
mn=Math.ceil(Math.abs((min)/60));
alert(mn);
hours=parseFloat(hours)+parseFloat(mn);
//判断时间是否在下午上班前
}else if((new Date(startDay+startnoon)).getTime()-staDate.getTime()>0){
//判断时间是否在下班后
days=(new Date(startDay+startnoon)).getTime()-staDate.getTime();
hours=Math.floor(days/(3600*1000))-1;
alert(hours);
min=Math.floor(days/(60*1000));
alert(min);
mn=Math.ceil(Math.abs((min)/60));
alert(mn);
hours=parseFloat(hours)+parseFloat(mn);
}else{
days=(new Date(startDay+endwork)).getTime()-staDate.getTime();
hours=Math.floor(days/(3600*1000))-1;
alert(hours);
min=Math.floor(days/(60*1000));
alert(min);
mn=Math.ceil(Math.abs((min)/60));
alert(mn);
hours=parseFloat(hours)+parseFloat(mn);
}
alert(hours);
//判断时间开始是否在上班时间
if((new Date(endDay+endwork)).getTime()-endDate.getTime()<0){
days=(new Date(endDay+startwork)).getTime()-(new Date(startDay+startwork)).getTime();
var day=Math.floor(days/(3600*1000*24));
hour=day*8+8-hours;
}else if((new Date(endDay+startnoon)).getTime()-endDate.getTime()<0){
days=(new Date(endDay+startwork)).getTime()-(new Date(startDay+startwork)).getTime();
var day=Math.floor(days/(3600*1000*24));
hour=((new Date(endDay+startnoon)).getTime()-endDate.getTime())/(3600*1000);