1. 程式人生 > >js上週(月、季)、上上週(月、季)、去年同期上週(月、季)

js上週(月、季)、上上週(月、季)、去年同期上週(月、季)

    /***
     * 獲得當前時間
     */ 
function getCurrentDate(){ 
        return new Date(); 
    }; 
    
//今年以來的起止時間段
function getThisYear(){
	//起止日期陣列  
			var startStop=new Array(); 
			//獲取當前時間  
      var currentDate=this.getCurrentDate(); 
      var stop = currentDate.getYear()+"-"+(currentDate.getMonth()+1)+"-"+currentDate.getDate();
      var start = currentDate.getYear()+"-"+"01-01";
      
      //新增年初時間  
      startStop.push(start);//本週起始時間  
      //添加當前時間
      startStop.push(stop);//本週終止時間  
      //返回  
      return startStop; 
}
 //獲得昨日起止時間   
function getYesterdayDate(){
		//起止日期陣列  
			var startStop=new Array(); 
			//獲取當前時間  
      var currentDate=this.getCurrentDate(); 
      //一天的毫秒數  
      var millisecond=1000*60*60*24; 
      //昨日時間
      yesterday = new Date(currentDate.getTime()-millisecond);
      currentDate = currentDate.getYear()+"-"+(currentDate.getMonth()+1)+"-"+currentDate.getDate();
      yesterday = yesterday.getYear()+"-"+(yesterday.getMonth()+1)+"-"+yesterday.getDate();
      //新增本週時間  
      startStop.push(yesterday);//本週起始時間  
      //新增本週最後一天時間  
      startStop.push(currentDate);//本週終止時間  
      //返回  
      return startStop; 
}
    /***
     * 獲得本週起止時間
     */ 
function getCurrentWeek(){ 
        //起止日期陣列  
        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)); 
        monday = monday.getYear()+"-"+(monday.getMonth()+1)+"-"+monday.getDate();
        sunday = sunday.getYear()+"-"+(sunday.getMonth()+1)+"-"+sunday.getDate();
        //新增本週時間  
        startStop.push(monday);//本週起始時間  
        //新增本週最後一天時間  
        startStop.push(sunday);//本週終止時間  
        //返回  
        return startStop; 
    }; 
    /***
     * 獲得本月的起止時間
     */ 
function getCurrentMonth(){ 
        //起止日期陣列  
        var startStop=new Array(); 
        //獲取當前時間  
        var currentDate=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); 
        firstDay = firstDay.getYear()+"-"+(firstDay.getMonth()+1)+"-"+firstDay.getDate();
        lastDay = lastDay.getYear()+"-"+(lastDay.getMonth()+1)+"-"+lastDay.getDate();
        //新增至陣列中返回  
        startStop.push(firstDay); 
        startStop.push(lastDay); 
        //返回  
        return startStop; 
    }; 
     
    /**
     * 得到本季度開始的月份
     * @param month 需要計算的月份
     ***/ 
    function getQuarterSeasonStartMonth(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月份
     * */ 
function getMonthDays(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(); 
    }; 
     
    /**
     * 獲得本季度的起止日期
     */ 
function getCurrentSeason(){ 
        //起止日期陣列  
        var startStop=new Array(); 
        //獲取當前時間  
        var currentDate=getCurrentDate(); 
        //獲得當前月份0-11  
        var currentMonth=currentDate.getMonth(); 
        //獲得當前年份4位年  
        var currentYear=currentDate.getFullYear(); 
        //獲得本季度開始月份  
        var quarterSeasonStartMonth=getQuarterSeasonStartMonth(currentMonth); 
        //獲得本季度結束月份  
        var quarterSeasonEndMonth=quarterSeasonStartMonth+2; 
         
        //獲得本季度開始的日期  
        var quarterSeasonStartDate=new Date(currentYear,quarterSeasonStartMonth,1); 
        //獲得本季度結束的日期  
        var quarterSeasonEndDate=new Date(currentYear,quarterSeasonEndMonth,getMonthDays(currentYear, quarterSeasonEndMonth)); 
        quarterSeasonStartDate = quarterSeasonStartDate.getYear()+"-"+(quarterSeasonStartDate.getMonth()+1)+"-"+quarterSeasonStartDate.getDate();
        quarterSeasonEndDate = quarterSeasonEndDate.getYear()+"-"+(quarterSeasonEndDate.getMonth()+1)+"-"+quarterSeasonEndDate.getDate();
        //加入陣列返回  
        startStop.push(quarterSeasonStartDate); 
        startStop.push(quarterSeasonEndDate); 
        //返回  
        return startStop; 
    }; 
     
    /***
     * 得到本年的起止日期
     * 
     */ 
function getCurrentYear(){ 
        //起止日期陣列  
        var startStop=new Array(); 
        //獲取當前時間  
        var currentDate=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 月
     **/ 
function getPriorMonthFirstDay(year,month){ 
        //年份為0代表,是本年的第一月,所以不能減  
        if(month==0){ 
            month=11;//月份為上年的最後月份  
            year--;//年份減1  
            return new Date(year,month,1); 
        } 
        //否則,只減去月份  
        month--; 
        return new Date(year,month,1);; 
    }; 
     
    /**
     * 獲得上一月的起止日期
     * ***/ 
    function getPreviousMonth(){ 
        //起止日期陣列  
        var startStop=new Array(); 
        //獲取當前時間  
        var currentDate=getCurrentDate(); 
        //獲得當前月份0-11  
        var currentMonth=currentDate.getMonth(); 
        //獲得當前年份4位年  
        var currentYear=currentDate.getFullYear(); 
        //獲得上一個月的第一天  
        var priorMonthFirstDay=getPriorMonthFirstDay(currentYear,currentMonth); 
        //獲得上一月的最後一天  
        var priorMonthLastDay=new Date(priorMonthFirstDay.getFullYear(),priorMonthFirstDay.getMonth(),getMonthDays(priorMonthFirstDay.getFullYear(), priorMonthFirstDay.getMonth())); 
        //新增至陣列  
        priorMonthFirstDay = priorMonthFirstDay.getYear()+"-"+(priorMonthFirstDay.getMonth()+1)+"-"+priorMonthFirstDay.getDate();
        priorMonthLastDay = priorMonthLastDay.getYear()+"-"+(priorMonthLastDay.getMonth()+1)+"-"+priorMonthLastDay.getDate();
        startStop.push(priorMonthFirstDay); 
        startStop.push(priorMonthLastDay); 
        //返回  
        return startStop; 
    }; 
    
     /**
     * 獲得上上一月的起止日期
     * ***/ 
    function getPreviousPreviousMonth(){ 
        //起止日期陣列  
        var startStop=new Array(); 
        //獲取當前時間  
        var currentDate=getCurrentDate(); 
        //獲得上月月份0-11  
        var currentMonth=currentDate.getMonth()-1; 
        //獲得當前年份4位年  
        var currentYear=currentDate.getFullYear(); 
        //獲得上一個月的第一天  
        var priorMonthFirstDay=getPriorMonthFirstDay(currentYear,currentMonth); 
        //獲得上一月的最後一天  
        var priorMonthLastDay=new Date(priorMonthFirstDay.getFullYear(),priorMonthFirstDay.getMonth(),getMonthDays(priorMonthFirstDay.getFullYear(), priorMonthFirstDay.getMonth())); 
        //新增至陣列  
        priorMonthFirstDay = priorMonthFirstDay.getYear()+"-"+(priorMonthFirstDay.getMonth()+1)+"-"+priorMonthFirstDay.getDate();
        priorMonthLastDay = priorMonthLastDay.getYear()+"-"+(priorMonthLastDay.getMonth()+1)+"-"+priorMonthLastDay.getDate();
        startStop.push(priorMonthFirstDay); 
        startStop.push(priorMonthLastDay); 
        //返回  
        return startStop; 
    }; 
     
     //去年上個月
    function getLastYearLastMonth(){
    		//起止日期陣列  
      var startStop=new Array(); 
    	var lastMonth = getPreviousMonth();
    	var start = lastMonth[0];
    	var year = start.split("-")[0];
    	start = (parseInt(year)-1)+"-"+start.split("-")[1]+"-"+start.split("-")[2];
    	var end = lastMonth[1];
    	end = (parseInt(year)-1)+"-"+end.split("-")[1]+"-"+end.split("-")[2];
      //新增至陣列  
      startStop.push(start); 
      startStop.push(end); 
      return startStop; 
    	}
     
    /**
     * 獲得上一週的起止日期
     * **/ 
function getPreviousWeek(){ 
        //起止日期陣列  
        var startStop=new Array(); 
        //獲取當前時間  
        var currentDate=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)); 
        priorWeekFirstDay = priorWeekFirstDay.getYear()+"-"+(priorWeekFirstDay.getMonth()+1)+"-"+priorWeekFirstDay.getDate();
        priorWeekLastDay = priorWeekLastDay.getYear()+"-"+(priorWeekLastDay.getMonth()+1)+"-"+priorWeekLastDay.getDate();
        //新增至陣列  
        startStop.push(priorWeekFirstDay); 
        startStop.push(priorWeekLastDay); 
         
        return startStop; 
    }; 
    
    /**
     * 獲得上上一週的起止日期
     * **/ 
function getPreviousPreviousWeek(){ 
        //起止日期陣列  
        var startStop=new Array(); 
        //獲取當前時間  
        var currentDate=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 temp = getPreviousWeek()[0]//上週第一天,但是不是date格式
        var lastWeekFirstday = Date.parse(temp.replace(/-/g,"/"));
        lastWeekFirstday = new Date(lastWeekFirstday);
        //上週最後一天即本週開始的前一天  
        var priorWeekLastDay=new Date(lastWeekFirstday.getTime()-millisecond); 
        //上週的第一天  
        var priorWeekFirstDay=new Date(priorWeekLastDay.getTime()-(millisecond*6)); 
        priorWeekFirstDay = priorWeekFirstDay.getYear()+"-"+(priorWeekFirstDay.getMonth()+1)+"-"+priorWeekFirstDay.getDate();
        priorWeekLastDay = priorWeekLastDay.getYear()+"-"+(priorWeekLastDay.getMonth()+1)+"-"+priorWeekLastDay.getDate();
        //新增至陣列  
        startStop.push(priorWeekFirstDay); 
        startStop.push(priorWeekLastDay); 
         
        return startStop; 
    }; 
    //去年本週
    function getLastYearLastWeek(){
    	//起止日期陣列  
      var startStop=new Array(); 
    	var lastWeek = getPreviousPreviousWeek();
    	var start = lastWeek[0];
    	var year = start.split("-")[0];
    	start = (parseInt(year)-1)+"-"+start.split("-")[1]+"-"+start.split("-")[2];
    	var end = lastWeek[1];
    	end = (parseInt(year)-1)+"-"+end.split("-")[1]+"-"+end.split("-")[2];
      //新增至陣列  
      startStop.push(start); 
      startStop.push(end); 
      return startStop; 
    	}
     
    /**
     * 得到上季度的起始日期
     * year 這個年應該是運算後得到的當前本季度的年份
     * month 這個應該是運算後得到的當前季度的開始月份
     * */ 
function getPriorSeasonFirstDay(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); 
    }; 
     
    /**
     * 得到上季度的起止日期
     * **/ 
function getPreviousSeason(){ 
        //起止日期陣列  
        var startStop=new Array(); 
        //獲取當前時間  
        var currentDate=getCurrentDate(); 
        //獲得當前月份0-11  
        var currentMonth=currentDate.getMonth(); 
        //獲得當前年份4位年  
        var currentYear=currentDate.getFullYear(); 
        //上季度的第一天  
        var priorSeasonFirstDay=getPriorSeasonFirstDay(currentYear, currentMonth); 
        //上季度的最後一天  
        var priorSeasonLastDay=new Date(priorSeasonFirstDay.getFullYear(),priorSeasonFirstDay.getMonth()+2,getMonthDays(priorSeasonFirstDay.getFullYear(), priorSeasonFirstDay.getMonth()+2)); 
        //新增至陣列 
        priorSeasonFirstDay = priorSeasonFirstDay.getYear()+"-"+(priorSeasonFirstDay.getMonth()+1)+"-"+priorSeasonFirstDay.getDate();
        priorSeasonLastDay = priorSeasonLastDay.getYear()+"-"+(priorSeasonLastDay.getMonth()+1)+"-"+priorSeasonLastDay.getDate();   
        startStop.push(priorSeasonFirstDay); 
        startStop.push(priorSeasonLastDay); 
        return startStop; 
    }; 
    //去年上個季度
    function getLastYearLastSeason(){
    		//起止日期陣列  
      var startStop=new Array(); 
    	var lastSeason = getPreviousSeason();
    	var start = lastSeason[0];
    	var year = start.split("-")[0];
    	start = (parseInt(year)-1)+"-"+start.split("-")[1]+"-"+start.split("-")[2];
    	var end = lastSeason[1];
    	end = (parseInt(year)-1)+"-"+end.split("-")[1]+"-"+end.split("-")[2];
      //新增至陣列  
      startStop.push(start); 
      startStop.push(end); 
      return startStop; 
    	}
    
        /**
     * 得到上上季度的起止日期
     * **/ 
function getPreviousPreviousSeason(){ 
        //起止日期陣列  
        var startStop=new Array(); 
        //獲取當前時間  
        var currentDate=getCurrentDate(); 
        //獲得上季度同期月份0-11  
        var currentMonth=currentDate.getMonth(); 
        var currentYear = "";
        if(currentMonth<3){
        		currentMonth = 12-(3-parseInt(currentMonth))-1;
        		currentYear = parseInt(currentDate.getFullYear())-1;
        }else{
        	//獲得當前年份4位年  
        currentYear=currentDate.getFullYear(); 	
        }
        //上上季度的第一天  
        var priorSeasonFirstDay=getPriorSeasonFirstDay(currentYear, currentMonth); 
        //上上季度的最後一天  
        var priorSeasonLastDay=new Date(priorSeasonFirstDay.getFullYear(),priorSeasonFirstDay.getMonth()+2,getMonthDays(priorSeasonFirstDay.getFullYear(), priorSeasonFirstDay.getMonth()+2)); 
        //新增至陣列
        priorSeasonFirstDay = priorSeasonFirstDay.getYear()+"-"+(priorSeasonFirstDay.getMonth()+1)+"-"+priorSeasonFirstDay.getDate();
        priorSeasonLastDay = priorSeasonLastDay.getYear()+"-"+(priorSeasonLastDay.getMonth()+1)+"-"+priorSeasonLastDay.getDate();  
        startStop.push(priorSeasonFirstDay); 
        startStop.push(priorSeasonLastDay); 
        return startStop; 
    };
     
    /**
     * 得到去年的起止日期
     * **/ 
function getPreviousYear(){ 
        //起止日期陣列  
        var startStop=new Array(); 
        //獲取當前時間  
        var currentDate=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; 
    };