js上週(月、季)、上上週(月、季)、去年同期上週(月、季)
阿新 • • 發佈:2019-02-14
/*** * 獲得當前時間 */ 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; };