js計算指定時間所在周、月、季度、半年、全年
阿新 • • 發佈:2019-01-04
//獲取指定日期whereTheTime的所在周、月、季度、半年、全年 //type為1:周,2:月,3:季度,4:半年,5:全年 function computTimeHorizon(whereTheTime,type){ var d = new Date(whereTheTime); var year = d.getFullYear(); var month = parseInt(d.getMonth())+1; switch (type){ case 1://周 //獲取週一 var beginWhereTheTime = GetMondayAndSunday(d); var dd = new Date(beginWhereTheTime); //獲取周天 dd.setDate(dd.getDate()+6); var monthSunday = parseInt(dd.getMonth())+1; var endWhereTheTime = dd.getFullYear() + "-" + formatDate(monthSunday) + "-" + formatDate(dd.getDate()); break; case 2://月 //獲取月第一天 var fristDay= new Date(year,month,1); var beginWhereTheTime = year + "-" + formatDate(month) + "-" + formatDate(fristDay.getDate()); //獲取月最後一天 var lastDay= new Date(year,month,0); var endWhereTheTime = year + "-" + formatDate(month) + "-" + formatDate(lastDay.getDate()); break; case 3://季度 //獲取當前月所在季度 var quarter = getQuarterStartMonth(month); if(quarter != 0){ //獲取季度第一天 var fristDay = new Date(year,quarter,1); //獲取季度最後一天 var lastDay = new Date(year,quarter+2,0); var beginWhereTheTime = year + "-" + formatDate(quarter) + "-" + formatDate(fristDay.getDate()); var endWhereTheTime = year + "-" + formatDate(quarter+2) + "-" + formatDate(lastDay.getDate()); } break; case 4://半年 var startMonth = 0; var endMonth = 0; if(month < 7){//上半年 startMonth = 1; endMonth = 6; }else{//下半年 startMonth = 7; endMonth = 12; } //獲取第一天 var fristDay = new Date(year,1,1); //獲取最後一天 var lastDay = new Date(year,6,0); var beginWhereTheTime = year + "-" + formatDate(startMonth) + "-" + formatDate(fristDay.getDate()); var endWhereTheTime = year + "-" + formatDate(endMonth) + "-" + formatDate(lastDay.getDate()); break; case 5://全年 var beginWhereTheTime = year + "-01-01"; var endWhereTheTime = year + "-12-31"; break; } }
//獲取指定日期所在週週一 function GetMondayAndSunday(dd) { var week = dd.getDay(); //獲取時間的星期數 var minus = week ? week - 1 : 6; dd.setDate(dd.getDate() - minus); //獲取minus天前的日期 var y = dd.getFullYear(); var m = dd.getMonth() + 1; //獲取月份 var d = dd.getDate(); return y + "-" + formatDate(m) + "-" + formatDate(d); } //格式化月和日為MM、dd function formatDate(value){ if(value < 10){ value = "0" + value; } return value; } //獲取當前月所在季度的開始月 function getQuarterStartMonth(month){ var quarterStartMonth = 0; if(month<4){ quarterStartMonth = 1; } if(3<month && month<7){ quarterStartMonth = 4; } if(6<month && month<10){ quarterStartMonth = 7; } if(month>9){ quarterStartMonth = 10; } return quarterStartMonth; }