zoukankan      html  css  js  c++  java
  • 计算两个日期之间的工作日

    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
    }

  • 相关阅读:
    31天重构学习笔记23. 引入参数对象
    31天重构学习笔记31. 使用多态代替条件判断
    31天重构学习笔记25. 引入契约式设计
    新加坡面试经历
    Release a AutoUpdater tool
    31天重构学习笔记24. 分解复杂判断
    31天重构学习笔记29. 去除中间人对象
    自动更新组件分享
    WPF基础到企业应用系列7——深入剖析依赖属性(WPF/Silverlight核心)
    (收藏)2010年度十大杰出IT博客
  • 原文地址:https://www.cnblogs.com/moonfans/p/3332802.html
Copyright © 2011-2022 走看看