function getWeekInYear(date) { //判断该星期是否跨年,如果跨年就是第一周 let weekStartDate = getWeekStartByDate(date) //一周开始时间 let endDate = getDateFromDay(weekStartDate, 6) //一周结束时间 if (weekStartDate.getFullYear() != endDate.getFullYear()) { return endDate.getFullYear() + '年第1周' } let d1 = new Date(date) let d2 = new Date(date) d2.setMonth(0) d2.setDate(1) d2 = getWeekStartByDate(d2) let rq = d1 - d2 let days = Math.ceil(rq / (24 * 60 * 60 * 1000)) + 1 let num = Math.ceil(days / 7) return endDate.getFullYear() + '年第' + num + '周' } function getWeekStartByDate(date) { let day = date.getDay() return getDateFromDay(date, -day) } function getDateFromDay(dayDate, day) { let date = new Date() date.setTime(dayDate.getTime() + day * 24 * 60 * 60 * 1000) return date } /** * 获取区间日期的小时/天/周/月数组支持跨年 *type:类型分为('hour'-小时,'day'-天,'week'-周,'month'-月) *start:开始日期 *stop:结束日期 * */ function getDuration(type,start,stop){ var weekArr = new Array(); var $array = new Array(); var current = new Date(start); stop = new Date(stop); while (current <= stop) { $array.push( new Date (current) ); if(type == 'hour'){//小时 current.setHours(current.getHours() + 1); }else if(type == 'day'){//天 current.setDate(current.getDate() + 1); }else if(type == 'week'){//周 current.setDate(current.getDate() + 7); }else if(type == 'month'){//月 current.setMonth(current.getMonth() + 1); }else{//默认天 current.setDate(current.getDate() + 1); } } for(var i=0;i<$array.length;i++){ let week = getWeekInYear($array[i]); weekArr[i]=week; } return weekArr; } /** * 获取区间日期的季度 *start:开始日期 *stop:结束日期 * */ function getFourSeason(start,stop) { let starttime = new Date(start); let endtime = new Date(stop); let startYear = starttime.getFullYear(); let endYear = endtime.getFullYear(); let startMonth = starttime.getMonth() + 1; let endMonth = endtime.getMonth() + 1; var arr = []; for (let i = startYear; i <= endYear; i++) { // 开始年份与结束年份相同 if(startYear == endYear){ if(startMonth<=3 && endMonth<=3){ arr.push( i+"年"+"第一季度" ) }else if(startMonth<=3 && 3<endMonth && endMonth<=6){ arr.push( i+"年"+"第一季度", i+"年"+"第二季度" ) }else if(startMonth<=3 && 6<endMonth && endMonth<=9){ arr.push( i+"年"+"第一季度", i+"年"+"第二季度", i+"年"+"第三季度" ) }else if(startMonth<=3 && 9<endMonth && endMonth<=12){ arr.push( i+"年"+"第一季度", i+"年"+"第二季度", i+"年"+"第三季度", i+"年"+"第四季度" ) }else if(3<startMonth && startMonth<=6 && 3<endMonth && endMonth<=6){ arr.push( i+"年"+"第二季度", ) }else if(3<startMonth && startMonth<=6 && 6<endMonth && endMonth<=9){ arr.push( i+"年"+"第二季度", i+"年"+"第三季度" ) }else if(3<startMonth && startMonth<=6 && 9<endMonth && endMonth<=12){ arr.push( i+"年"+"第二季度", i+"年"+"第三季度", i+"年"+"第四季度" ) }else if(6<startMonth && startMonth<=9 && 6<endMonth && endMonth<=9){ arr.push( i+"年"+"第三季度" ) }else if(6<startMonth && startMonth<=9 && 9<endMonth && endMonth<=12){ arr.push( i+"年"+"第三季度", i+"年"+"第四季度" ) }else if(9<startMonth && startMonth<=12 && 9<endMonth && endMonth<=12){ arr.push( i+"年"+"第四季度" ) } }else{ // 开始的那年 if (i == startYear) { if(startMonth<=3){ arr.push( startYear+"年"+"第一季度", startYear+"年"+"第二季度", startYear+"年"+"第三季度", startYear+"年"+"第四季度" ) }else if(startMonth>3&&startMonth<=6){ arr.push( startYear+"年"+"第二季度", startYear+"年"+"第三季度", startYear+"年"+"第四季度" ) }else if(startMonth>6&&startMonth<=9){ arr.push( startYear+"年"+"第三季度", startYear+"年"+"第四季度" ) }else{ arr.push( startYear+"年"+"第四季度" ) } } if(i>startYear&&i<endYear){ arr.push( i+"年"+"第一季度", i+"年"+"第二季度", i+"年"+"第三季度", i+"年"+"第四季度" ) } // 结束的那年 if(i==endYear){ if(endMonth<=3){ arr.push( endYear+"年"+"第一季度" ) }else if(endMonth>3&&endMonth<=6){ arr.push( endYear+"年"+"第一季度", endYear+"年"+"第二季度" ) }else if(endMonth>6&&endMonth<=9){ arr.push( endYear+"年"+"第一季度", endYear+"年"+"第二季度", endYear+"年"+"第三季度" ) }else{ arr.push( endYear+"年"+"第一季度", endYear+"年"+"第二季度", endYear+"年"+"第三季度", endYear+"年"+"第四季度" ) } } } } return arr; }
根据开始日期和结束日期,计算周数,季度数,返回数组结果,支持跨年,纯JS文件
最新推荐文章于 2023-03-17 10:53:09 发布