计算两个日期之间的工作日

1、对于文本域待遇onblur事件最常用 的是onchange事件,避免在初始化吃出现onblur的情况,造成不必要的判断

2 js中处理date类型对象时必须将string类型的对象通过Date.parse()转化为date类型的对象以后再采用js中的时间处理函数来操作。通过插件产生的时间字符串往往是中间用“-”隔开的,但是在js中的Date类型数据处理中确实用“/”分割的,所以必须转化。

3 js中的时间处理函数如下:

var myDate = new Date();     //取得(创建)当前时间   

  •   myDate.getYear();       //获取当前年份(2位)      
  •   myDate.getFullYear();   //获取完整的年份(4位,1970-????)      
  •   myDate.getMonth();      //获取当前月份(0-11,0代表1月)      
  •   myDate.getDate();       //获取当前日(1-31)      
  •   myDate.getDay();        //获取当前星期X(0-6,0代表星期天)      
  •   
  •   myDate.getTime();       //获取当前时间(从1970.1.1开始的毫秒数)      
  •   myDate.getHours();      //获取当前小时数(0-23)      
  •   myDate.getMinutes();    //获取当前分钟数(0-59)      
  •   myDate.getSeconds();    //获取当前秒数(0-59)      
  •   myDate.getMilliseconds();   //获取当前毫秒数(0-999)      
  •   myDate.toLocaleDateString();    //获取当前日期      
  •   var mytime=myDate.toLocaleTimeString();    //获取当前时间      
  •   myDate.toLocaleString( );       //获取日期与时间  

计算两个日期之间工作日的函数如下:

function calculateWorkDays(fromStr,toStr){
var from = new Date();
var to = new Date();
var fromTime = Date.parse(fromStr.replace(/-/g,"/"));
var toTime = Date.parse(toStr.replace(/-/g,"/"));

from.setTime(fromTime);
from.setHours(0);
from.setMinutes(0);
from.setSeconds(0);

to.setTime(toTime);
to.setHours(0);
to.setMinutes(0);
to.setSeconds(0);
if(from.getTime() > to.getTime()){
return 0;
}

// 把起始日都修正到星期六 javascript的星期从0开始,所以+1来处理
var sDayofWeek = from.getDay()+1;
var workdays=0;

// 修正到星期六之后,再修正多出来的非假日
if(sDayofWeek > 1 && sDayofWeek < 7)
{
from.setDate(from.getDate()-(sDayofWeek%7));
workdays-=((sDayofWeek-2)>0)?sDayofWeek-2:0;
}

// 计算两个日期之间的天数
var totalDays = (to.getTime()-from.getTime())/(1000*60*60*24)+1;
workdays+=Math.floor(totalDays/7)*5;

// 修正最后剩余天数
if((totalDays%7-2)>0){
workdays+=(totalDays%7-2);
}
return workdays
}