呵呵你们的方法都不是很好,showbo大哥的运行后也有问题,然后我想出一个方法,改了改,先将时间格式化,如果在开始和结束时间以外就设置成开始时间和结束时间,然后工作时间=(格式化的现在时间-格式化后的开始时间)-(24-(工作时间))谢谢大家的帮助了,谢谢!!! function Compute(workTimeStart,workTimeEnd,refDate) { var dayWorkMinute=(workTimeEnd-workTimeStart)*60; refDate=new Date(refDate.replace(/-/g,"/")); if(refDate.toString()=="NaN"){alert("错误的时间类型!");return -1;} var nowDate=new Date(); if(refDate>nowDate){alert("请输入一个小于今天的时间!");return -1;} var totalMinute=0;
//计算相差天数 var refDate1=refDate.getYear()+"-"+(refDate.getMonth()+1)+"-"+refDate.getDate()+" 00:00:00"; refDate1=new Date(refDate1.replace(/-/g,"/")); var nowDate1=nowDate.getYear()+"-"+(nowDate.getMonth()+1)+"-"+nowDate.getDate()+" 00:00:00"; nowDate1=new Date(nowDate1.replace(/-/g,"/")); var days=parseInt((nowDate1-refDate1)/(1000*60*60*24));//求相隔的天数 //alert(days);
{
var dayWorkMinute=(workTimeEnd-workTimeStart)*60;
refDate=new Date(refDate.replace(/-/g,"/"));
if(refDate.toString()=="NaN"){alert("错误的时间类型!");return -1;}
var nowDate=new Date();
if(refDate>nowDate){alert("请输入一个小于今天的时间!");return -1;}
var totalMinute=0;
//计算天数差
var days=parseInt((nowDate-refDate)/(1000*60*60*24));//求相隔的天数
totalMinute+=days*dayWorkMinute;
//计算日期时间的差
var refHour=refDate.getHours(),refMinute=refDate.getMinutes(),nowHour=nowDate.getHours(),nowMinute=nowDate.getMinutes();
if(refHour>=workTimeStart&&refHour<workTimeEnd)//计算传递的日期时间
totalMinute+=(workTimeEnd-refHour)*60+refMinute;
if(nowHour>workTimeStart&&nowHour<workTimeEnd)//计算现在的日期时间
totalMinute+=(nowHour-9)*60+nowMinute;
return totalMinute;
}//测试
var workMinute,refDate="2008-6-18 18:00:00";
workMinute=Compute(9,18,refDate);
if(workMinute!=-1)alert("从"+refDate+"到现在已经工作了"+workMinute+"分钟!");
refDate="2008-6-25 18:00:00";
workMinute=Compute(9,18,refDate);
if(workMinute!=-1)alert("从"+refDate+"到现在已经工作了"+workMinute+"分钟!");
refDate="2008-6-17 18:00:00";
workMinute=Compute(9,18,refDate);
if(workMinute!=-1)alert("从"+refDate+"到现在已经工作了"+workMinute+"分钟!");
refDate="2008-6-15 18:00:00";
workMinute=Compute(9,18,refDate);
if(workMinute!=-1)alert("从"+refDate+"到现在已经工作了"+workMinute+"分钟!");
function Compute(workTimeStart,workTimeEnd,refDate)
{
var dayWorkMinute=(workTimeEnd-workTimeStart)*60;
refDate=new Date(refDate.replace(/-/g,"/"));
if(refDate.toString()=="NaN"){alert("错误的时间类型!");return -1;}
var nowDate=new Date();
if(refDate>nowDate){alert("请输入一个小于今天的时间!");return -1;}
var totalMinute=0;
//计算相差天数
var refDate1=refDate.getYear()+"-"+(refDate.getMonth()+1)+"-"+refDate.getDate()+" 00:00:00";
refDate1=new Date(refDate1.replace(/-/g,"/"));
var nowDate1=nowDate.getYear()+"-"+(nowDate.getMonth()+1)+"-"+nowDate.getDate()+" 00:00:00";
nowDate1=new Date(nowDate1.replace(/-/g,"/"));
var days=parseInt((nowDate1-refDate1)/(1000*60*60*24));//求相隔的天数
//alert(days);
//totalMinute+=days*dayWorkMinute;
//计算日期时间的差
if(refDate.getHours()<workTimeStart)
{
refDate=refDate.getYear()+"-"+(refDate.getMonth()+1)+"-"+refDate.getDate()+" "+workTimeStart+":00:00";
refDate=new Date(refDate.replace(/-/g,"/"));
alert(refDate.getMonth());
alert(refDate);
}
if(refDate.getHours()>workTimeEnd)
{
refDate=refDate.getYear()+"-"+(refDate.getMonth()+1)+"-"+refDate.getDate()+" "+workTimeEnd+":00:00";
refDate=new Date(refDate.replace(/-/g,"/"));
}
if(nowDate.getHours()<workTimeStart)
{
nowDate=nowDate.getYear()+"-"+(nowDate.getMonth()+1)+"-"+nowDate.getDate()+" "+workTimeStart+":00:00";
nowDate=new Date(nowDate.replace(/-/g,"/"));
}
if(nowDate.getHours()>workTimeEnd)
{
nowDate=nowDate.getYear()+"-"+(nowDate.getMonth()+1)+"-"+nowDate.getDate()+" "+workTimeEnd+":00:00";
nowDate=new Date(nowDate.replace(/-/g,"/"));
}
alert(nowDate);
alert(refDate);
var totalMinute=parseInt((nowDate-refDate)/(1000*60))-days*(24-(workTimeEnd-workTimeStart))*60;
//工作时间=(格式化的现在时间-格式化后的开始时间)-(24-(工作时间))
alert(totalMinute);
return totalMinute;
}//测试
var workMinute,refDate="2008-6-19 19:00:00";
workMinute=Compute(9,18,refDate);
if(workMinute!=-1)alert("从"+refDate+"到现在已经工作了"+workMinute+"分钟!");
var ndata = "06/19/2008 20:12:02";
var pdate = "06/19/2008 20:12:20";
var sec = Date.parse(pdate) - Date.parse(ndata);
//sec 是毫秒 就看你想转换什么了