js获取 本周,本月,本季度,本年,上月,上周,上季度,去年

来源:岁月联盟 编辑:exp 时间:2012-10-19

@author  YHC

 

 


[javascript]
/**
 * 针对Ext的工具类
 */ 
var MrYangUtil=function(){ 
    /***
     * 获得当前时间
     */ 
    this.getCurrentDate=function(){ 
        return new Date(); 
    }; 
    /***
     * 获得本周起止时间
     */ 
    this.getCurrentWeek=function(){ 
        //起止日期数组  
        var startStop=new Array(); 
        //获取当前时间  
        var currentDate=this.getCurrentDate(); 
        //返回date是一周中的某一天  
        var week=currentDate.getDay(); 
        //返回date是一个月中的某一天  
        var month=currentDate.getDate(); 
     
        //一天的毫秒数  
        var millisecond=1000*60*60*24; 
        //减去的天数  
        var minusDay=week!=0?week-1:6; 
        //alert(minusDay);  
        //本周 周一  
        var monday=new Date(currentDate.getTime()-(minusDay*millisecond)); 
        //本周 周日  
        var sunday=new Date(monday.getTime()+(6*millisecond)); 
        //添加本周时间  
        startStop.push(monday);//本周起始时间  
        //添加本周最后一天时间  
        startStop.push(sunday);//本周终止时间  
        //返回  
        return startStop; 
    }; 
     
    /***
     * 获得本月的起止时间
     */ 
    this.getCurrentMonth=function(){ 
        //起止日期数组  
        var startStop=new Array(); 
        //获取当前时间  
        var currentDate=this.getCurrentDate(); 
        //获得当前月份0-11  
        var currentMonth=currentDate.getMonth(); 
        //获得当前年份4位年  
        var currentYear=currentDate.getFullYear(); 
        //求出本月第一天  
        var firstDay=new Date(currentYear,currentMonth,1); 
         
 
        //当为12月的时候年份需要加1  
        //月份需要更新为0 也就是下一年的第一个月  
        if(currentMonth==11){ 
            currentYear++; 
            currentMonth=0;//就为  
        }else{ 
            //否则只是月份增加,以便求的下一月的第一天  
            currentMonth++; 
        } 
    
         
        //一天的毫秒数  
        var millisecond=1000*60*60*24; 
        //下月的第一天  
        var nextMonthDayOne=new Date(currentYear,currentMonth,1); 
        //求出上月的最后一天  
        var lastDay=new Date(nextMonthDayOne.getTime()-millisecond); 
         
        //添加至数组中返回  
        startStop.push(firstDay); 
        startStop.push(lastDay); 
        //返回  
        return startStop; 
    }; 
     
    /**
     * 得到本季度开始的月份
     * @param month 需要计算的月份
     ***/ 
    this.getQuarterSeasonStartMonth=function(month){ 
        var quarterMonthStart=0; 
        var spring=0; //春  
        var summer=3; //夏  
        var fall=6;   //秋  
        var winter=9;//冬  
        //月份从0-11  
        if(month<3){ 
            return spring; 
        } 
         
        if(month<6){ 
            return summer; 
        } 
         
        if(month<9){ 
            return fall; 
        } 
         
        return winter; 
    }; 
     
    /**
     * 获得该月的天数
     * @param year年份
     * @param month月份
     * */ 
    this.getMonthDays=function(year,month){ 
        //本月第一天 1-31  
        var relativeDate=new Date(year,month,1); 
        //获得当前月份0-11  
        var relativeMonth=relativeDate.getMonth(); 
        //获得当前年份4位年  
        var relativeYear=relativeDate.getFullYear(); 
         
        //当为12月的时候年份需要加1  
        //月份需要更新为0 也就是下一年的第一个月  
        if(relativeMonth==11){ 
            relativeYear++; 
            relativeMonth=0; 
        }else{ 
            //否则只是月份增加,以便求的下一月的第一天  
            relativeMonth++; 
        } 
        //一天的毫秒数  
        var millisecond=1000*60*60*24; 
        //下月的第一天  
        var nextMonthDayOne=new Date(relativeYear,relativeMonth,1); 
        //返回得到上月的最后一天,也就是本月总天数  
        return new Date(nextMonthDayOne.getTime()-millisecond).getDate(); 
    }; 
     
    /**
     * 获得本季度的起止日期
     */ 
    this.getCurrentSeason=function(){ 
        //起止日期数组  
        var startStop=new Array(); 
        //获取当前时间  
        var currentDate=this.getCurrentDate(); 
        //获得当前月份0-11  
        var currentMonth=currentDate.getMonth(); 
        //获得当前年份4位年  
        var currentYear=currentDate.getFullYear(); 
        //获得本季度开始月份  
        var quarterSeasonStartMonth=this.getQuarterSeasonStartMonth(currentMonth); 
        //获得本季度结束月份  
        var quarterSeasonEndMonth=quarterSeasonStartMonth+2; 
         
        //获得本季度开始的日期  
        var quarterSeasonStartDate=new Date(currentYear,quarterSeasonStartMonth,1); 
        //获得本季度结束的日期  
        var quarterSeasonEndDate=new Date(currentYear,quarterSeasonEndMonth,this.getMonthDays(currentYear, quarterSeasonEndMonth)); 
        //加入数组返回  
        startStop.push(quarterSeasonStartDate); 
        startStop.push(quarterSeasonEndDate); 
        //返回  
        return startStop; 
    }; 
     
    /***
     * 得到本年的起止日期
     * 
     */ 
    this.getCurrentYear=function(){ 
        //起止日期数组  
        var startStop=new Array(); 
        //获取当前时间  
        var currentDate=this.getCurrentDate(); 
        //获得当前年份4位年  
        var currentYear=currentDate.getFullYear(); 
         
        //本年第一天  
        var currentYearFirstDate=new Date(currentYear,0,1); 
        //本年最后一天  
        var currentYearLastDate=new Date(currentYear,11,31); 
        //添加至数组  
        startStop.push(currentYearFirstDate); 
        startStop.push(currentYearLastDate); 
        //返回  
        return startStop; 
    }; 
     
    /**
     * 返回上一个月的第一天Date类型
     * @param year 年
     * @param month 月
     **/ 
    this.getPriorMonthFirstDay=function(year,month){ 
        //年份为0代表,是本年的第一月,所以不能减  
        if(month==0){ 
            month=11;//月份为上年的最后月份  
            year--;//年份减1  
            return new Date(year,month,1); 
        } 
        //否则,只减去月份  
        month--; 
        return new Date(year,month,1);; 
    }; 
     
    /**
     * 获得上一月的起止日期
     * ***/ 
    this.getPreviousMonth=function(){ 
        //起止日期数组  
        var startStop=new Array(); 
        //获取当前时间  
        var currentDate=this.getCurrentDate(); 
        //获得当前月份0-11  
        var currentMonth=currentDate.getMonth(); 
        //获得当前年份4位年  
        var currentYear=currentDate.getFullYear(); 
        //获得上一个月的第一天  
        var priorMonthFirstDay=this.getPriorMonthFirstDay(currentYear,currentMonth); 
        //获得上一月的最后一天  
        var priorMonthLastDay=new Date(priorMonthFirstDay.getFullYear(),priorMonthFirstDay.getMonth(),this.getMonthDays(priorMonthFirstDay.getFullYear(), priorMonthFirstDay.getMonth())); 
        //添加至数组  
        startStop.push(priorMonthFirstDay); 
        startStop.push(priorMonthLastDay); 
        //返回  
        return startStop; 
    }; 
     
     
    /**
     * 获得上一周的起止日期
     * **/ 
    this.getPreviousWeek=function(){ 
        //起止日期数组  
        var startStop=new Array(); 
        //获取当前时间  
        var currentDate=this.getCurrentDate(); 
        //返回date是一周中的某一天  
        var week=currentDate.getDay(); 
        //返回date是一个月中的某一天  
        var month=currentDate.getDate(); 
        //一天的毫秒数  
        var millisecond=1000*60*60*24; 
        //减去的天数  
        var minusDay=week!=0?week-1:6; 
        //获得当前周的第一天  
        var currentWeekDayOne=new Date(currentDate.getTime()-(millisecond*minusDay)); 
        //上周最后一天即本周开始的前一天  
        var priorWeekLastDay=new Date(currentWeekDayOne.getTime()-millisecond); 
        //上周的第一天  
        var priorWeekFirstDay=new Date(priorWeekLastDay.getTime()-(millisecond*6)); 
         
        //添加至数组  
        startStop.push(priorWeekFirstDay); 
        startStop.push(priorWeekLastDay); 
         
        return startStop; 
    }; 
     
    /**
     * 得到上季度的起始日期
     * year 这个年应该是运算后得到的当前本季度的年份
     * month 这个应该是运算后得到的当前季度的开始月份
     * */ 
    this.getPriorSeasonFirstDay=function(year,month){ 
        var quarterMonthStart=0; 
        var spring=0; //春  
        var summer=3; //夏  
        var fall=6;   //秋  
        var winter=9;//冬  
        //月份从0-11  
        switch(month){//季度的其实月份  
        case spring: 
            //如果是第一季度则应该到去年的冬季  
              year--; 
              month=winter; 
            break; 
        case summer: 
            month=spring; 
            break; 
        case fall: 
            month=summer; 
            break; 
        case winter: 
            month=fall; 
            break; 
             
        }; 
         
        return new Date(year,month,1); 
    }; 
     
    /**
     * 得到上季度的起止日期
     * **/ 
    this.getPreviousSeason=function(){ 
        //起止日期数组  
        var startStop=new Array(); 
        //获取当前时间  
        var currentDate=this.getCurrentDate(); 
        //获得当前月份0-11  
        var currentMonth=currentDate.getMonth(); 
        //获得当前年份4位年  
        var currentYear=currentDate.getFullYear(); 
        //上季度的第一天  
        var priorSeasonFirstDay=this.getPriorSeasonFirstDay(currentYear, currentMonth); 
        //上季度的最后一天  
        var priorSeasonLastDay=new Date(priorSeasonFirstDay.getFullYear(),priorSeasonFirstDay.getMonth()+2,this.getMonthDays(priorSeasonFirstDay.getFullYear(), priorSeasonFirstDay.getMonth()+2)); 
        //添加至数组  
        startStop.push(priorSeasonFirstDay); 
        startStop.push(priorSeasonLastDay); 
        return startStop; 
    }; 
     
    /**
     * 得到去年的起止日期
     * **/ 
    this.getPreviousYear=function(){ 
        //起止日期数组  
        var startStop=new Array(); 
        //获取当前时间  
        var currentDate=this.getCurrentDate(); 
        //获得当前年份4位年  
        var currentYear=currentDate.getFullYear(); 
            currentYear--; 
        var priorYearFirstDay=new Date(currentYear,0,1); 
        var priorYearLastDay=new Date(currentYear,11,1); 
        //添加至数组  
        startStop.push(priorYearFirstDay); 
        startStop.push(priorYearLastDay); 
        return startStop; 
    }; 
     
     
     
     
     
}; 

/**
 * 针对Ext的工具类
 */
var MrYangUtil=function(){
 /***
  * 获得当前时间
  */
 this.getCurrentDate=function(){
  return new Date();
 };
 /***
  * 获得本周起止时间
  */
 this.getCurrentWeek=function(){
  //起止日期数组
  var startStop=new Array();
  //获取当前时间
  var currentDate=this.getCurrentDate();
  //返回date是一周中的某一天
  var week=currentDate.getDay();
  //返回date是一个月中的某一天
  var month=currentDate.getDate();
 
  //一天的毫秒数
  var millisecond=1000*60*60*24;
  //减去的天数
  var minusDay=week!=0?week-1:6;
  //alert(minusDay);
  //本周 周一
  var monday=new Date(currentDate.getTime()-(minusDay*millisecond));
  //本周 周日
  var sunday=new Date(monday.getTime()+(6*millisecond));
  //添加本周时间
  startStop.push(monday);//本周起始时间
  //添加本周最后一天时间
  startStop.push(sunday);//本周终止时间
  //返回
  return startStop;
 };
 
 /***
  * 获得本月的起止时间
  */
 this.getCurrentMonth=function(){
  //起止日期数组
  var startStop=new Array();
  //获取当前时间
  var currentDate=this.getCurrentDate();
  //获得当前月份0-11
  var currentMonth=currentDate.getMonth();
  //获得当前年份4位年
  var currentYear=currentDate.getFullYear();
  //求出本月第一天
  var firstDay=new Date(currentYear,currentMonth,1);
  

  //当为12月的时候年份需要加1
  //月份需要更新为0 也就是下一年的第一个月
  if(currentMonth==11){
   currentYear++;
   currentMonth=0;//就为
  }else{
   //否则只是月份增加,以便求的下一月的第一天
   currentMonth++;
  }
  
  
  //一天的毫秒数
  var millisecond=1000*60*60*24;
  //下月的第一天
  var nextMonthDayOne=new Date(currentYear,currentMonth,1);
  //求出上月的最后一天
  var lastDay=new Date(nextMonthDayOne.getTime()-millisecond);
  
  //添加至数组中返回
  startStop.push(firstDay);
  startStop.push(lastDay);
  //返回
  return startStop;
 };
 
 /**
  * 得到本季度开始的月份
  * @param month 需要计算的月份
  ***/
 this.getQuarterSeasonStartMonth=function(month){
  var quarterMonthStart=0;
  var spring=0; //春
  var summer=3; //夏
  var fall=6;   //秋
  var winter=9;//冬
  //月份从0-11
  if(month<3){
   return spring;
  }
  
  if(month<6){
   return summer;
  }
  
  if(month<9){
   return fall;
  }
  
  return winter;
 };
 
 /**
  * 获得该月的天数
  * @param year年份
  * @param month月份
  * */
 this.getMonthDays=function(year,month){
  //本月第一天 1-31
  var relativeDate=new Date(year,month,1);
  //获得当前月份0-11
  var relativeMonth=relativeDate.getMonth();
  //获得当前年份4位年
  var relativeYear=relativeDate.getFullYear();
  
  //当为12月的时候年份需要加1
  //月份需要更新为0 也就是下一年的第一个月
  if(relativeMonth==11){
   relativeYear++;
   relativeMonth=0;
  }else{
   //否则只是月份增加,以便求的下一月的第一天
   relativeMonth++;
  }
  //一天的毫秒数
  var millisecond=1000*60*60*24;
  //下月的第一天
  var nextMonthDayOne=new Date(relativeYear,relativeMonth,1);
  //返回得到上月的最后一天,也就是本月总天数
  return new Date(nextMonthDayOne.getTime()-millisecond).getDate();
 };
 
 /**
  * 获得本季度的起止日期
  */
 this.getCurrentSeason=function(){
  //起止日期数组
  var startStop=new Array();
  //获取当前时间
  var currentDate=this.getCurrentDate();
  //获得当前月份0-11
  var currentMonth=currentDate.getMonth();
  //获得当前年份4位年
  var currentYear=currentDate.getFullYear();
  //获得本季度开始月份
  var quarterSeasonStartMonth=this.getQuarterSeasonStartMonth(currentMonth);
  //获得本季度结束月份
  var quarterSeasonEndMonth=quarterSeasonStartMonth+2;
  
  //获得本季度开始的日期
  var quarterSeasonStartDate=new Date(currentYear,quarterSeasonStartMonth,1);
  //获得本季度结束的日期
  var quarterSeasonEndDate=new Date(currentYear,quarterSeasonEndMonth,this.getMonthDays(currentYear, quarterSeasonEndMonth));
  //加入数组返回
  startStop.push(quarterSeasonStartDate);
  startStop.push(quarterSeasonEndDate);
  //返回
  return startStop;
 };
 
 /***
  * 得到本年的起止日期
  *
  */
 this.getCurrentYear=function(){
  //起止日期数组
  var startStop=new Array();
  //获取当前时间
  var currentDate=this.getCurrentDate();
  //获得当前年份4位年
  var currentYear=currentDate.getFullYear();
  
  //本年第一天
  var currentYearFirstDate=new Date(currentYear,0,1);
  //本年最后一天
  var currentYearLastDate=new Date(currentYear,11,31);
  //添加至数组
  startStop.push(currentYearFirstDate);
  startStop.push(currentYearLastDate);
  //返回
  return startStop;
 };
 
 /**
  * 返回上一个月的第一天Date类型
  * @param year 年
  * @param month 月
  **/
 this.getPriorMonthFirstDay=function(year,month){
  //年份为0代表,是本年的第一月,所以不能减
  if(month==0){
   month=11;//月份为上年的最后月份
   year--;//年份减1
   return new Date(year,month,1);
  }
  //否则,只减去月份
  month--;
  return new Date(year,month,1);;
 };
 
 /**
  * 获得上一月的起止日期
  * ***/
 this.getPreviousMonth=function(){
  //起止日期数组
  var startStop=new Array();
  //获取当前时间
  var currentDate=this.getCurrentDate();
  //获得当前月份0-11
  var currentMonth=currentDate.getMonth();
  //获得当前年份4位年
  var currentYear=currentDate.getFullYear();
  //获得上一个月的第一天
        var priorMonthFirstDay=this.getPriorMonthFirstDay(currentYear,currentMonth);
        //获得上一月的最后一天
        var priorMonthLastDay=new Date(priorMonthFirstDay.getFullYear(),priorMonthFirstDay.getMonth(),this.getMonthDays(priorMonthFirstDay.getFullYear(), priorMonthFirstDay.getMonth()));
        //添加至数组
        startStop.push(priorMonthFirstDay);
        startStop.push(priorMonthLastDay);
  //返回
  return startStop;
 };
 
 
 /**
  * 获得上一周的起止日期
  * **/
 this.getPreviousWeek=function(){
  //起止日期数组
  var startStop=new Array();
  //获取当前时间
  var currentDate=this.getCurrentDate();
  //返回date是一周中的某一天
  var week=currentDate.getDay();
  //返回date是一个月中的某一天
  var month=currentDate.getDate();
  //一天的毫秒数
  var millisecond=1000*60*60*24;
  //减去的天数
  var minusDay=week!=0?week-1:6;
  //获得当前周的第一天
  var currentWeekDayOne=new Date(currentDate.getTime()-(millisecond*minusDay));
  //上周最后一天即本周开始的前一天
  var priorWeekLastDay=new Date(currentWeekDayOne.getTime()-millisecond);
  //上周的第一天
  var priorWeekFirstDay=new Date(priorWeekLastDay.getTime()-(millisecond*6));
  
  //添加至数组
  startStop.push(priorWeekFirstDay);
  startStop.push(priorWeekLastDay);
  
  return startStop;
 };
 
 /**
  * 得到上季度的起始日期
  * year 这个年应该是运算后得到的当前本季度的年份
  * month 这个应该是运算后得到的当前季度的开始月份
  * */
 this.getPriorSeasonFirstDay=function(year,month){
  var quarterMonthStart=0;
  var spring=0; //春
  var summer=3; //夏
  var fall=6;   //秋
  var winter=9;//冬
  //月份从0-11
  switch(month){//季度的其实月份
  case spring:
   //如果是第一季度则应该到去年的冬季
     year--;
     month=winter;
   break;
  case summer:
   month=spring;
   break;
  case fall:
   month=summer;
   break;
  case winter:
   month=fall;
   break;
   
  };
  
  return new Date(year,month,1);
 };
 
 /**
  * 得到上季度的起止日期
  * **/
 this.getPreviousSeason=function(){
  //起止日期数组
  var startStop=new Array();
  //获取当前时间
  var currentDate=this.getCurrentDate();
  //获得当前月份0-11
  var currentMonth=currentDate.getMonth();
  //获得当前年份4位年
  var currentYear=currentDate.getFullYear();
  //上季度的第一天
  var priorSeasonFirstDay=this.getPriorSeasonFirstDay(currentYear, currentMonth);
  //上季度的最后一天
  var priorSeasonLastDay=new Date(priorSeasonFirstDay.getFullYear(),priorSeasonFirstDay.getMonth()+2,this.getMonthDays(priorSeasonFirstDay.getFullYear(), priorSeasonFirstDay.getMonth()+2));
  //添加至数组
  startStop.push(priorSeasonFirstDay);
  startStop.push(priorSeasonLastDay);
  return startStop;
 };
 
 /**
  * 得到去年的起止日期
  * **/
 this.getPreviousYear=function(){
  //起止日期数组
  var startStop=new Array();
  //获取当前时间
  var currentDate=this.getCurrentDate();
  //获得当前年份4位年
  var currentYear=currentDate.getFullYear();
      currentYear--;
  var priorYearFirstDay=new Date(currentYear,0,1);
  var priorYearLastDay=new Date(currentYear,11,1);
  //添加至数组
  startStop.push(priorYearFirstDay);
  startStop.push(priorYearLastDay);
  return startStop;
 };
 
 
 
 
 
};