js计算某天一周的日期及一周前、一周后
// 点击今天 clickToday() { var date = new Date() var year = date.getFullYear() var month = date.getMonth() var day = date.getDate() this.nowDate = year+'-'+month+'-'+day // this.getDateRange(new Date(year,month,day)) }, // 点击上一周 beforeWeek() { var date = this.nowDate.split('-') // 判断是否为今天,是返回true,不再向前 if(this.checkIsToday(date)) { return } var year = parseInt(date[0]) var month = parseInt(date[1]) var day = parseInt(date[2]) // 当前日期向前推七天 if(day-7 >= 1) {// 七天后和当前日期同年同月 day = day-7 }else { if(month - 1 >= 0) {// 七天后和当前日期同年不同月 month-- var monthDays = new Date(year,month+1,0).getDate() // console.log("dddd:",monthDays,day) day = monthDays - (7 - day) }else {// 七天前和当前日期不同年不同月 month = 11 year-- var monthDays = new Date(year,month,0).getDate() day = monthDays - (7 - day)+1 } } this.nowDate = year+'-'+month+'-'+day }, // 点击下一周 afterWeek() { var date = this.nowDate.split('-') var year = parseInt(date[0]) var month = parseInt(date[1]) var day = parseInt(date[2]) // 当前日期向后推七天 var monthDays = new Date(year,(month+1),0).getDate() // console.log("kkkk:",monthDays,year,month,day) if(day+7 <= monthDays ) {// 七天后和当前日期同年同月 day = day+7 }else {// 七天后和当前日期同年不同月 if(month+1 < 12) { month++ day = 7-(monthDays - day) }else {// 七天后和当前日期不同年不同月 month = 0 year++ day = 7-(monthDays - day) } } this.nowDate = year+'-'+month+'-'+day }, // 获取某日期所处一周的日期范围 getDateRange(date) { // var date = new Date(dateStr) var year = date.getFullYear() var month = date.getMonth()+1 var day = date.getDate() var week = date.getDay() if(week == 0) { week = 7 } // 今天到本周第一天间隔多少天 var start = week-1 if(day - start >= 1) { // 若本周第一天和当天同月 for(var i = 0;i<=start; i++) { this.dateRange[i] = this.changeDateFormat(year,month,(day-start+i),'/') } this.startDate = this.changeDateFormat(year,month,(day-start),'/') }else{ if(month -1 >= 1) {// 本周第一天和当天不同月但同年 // 计算某月有多少天 var startMonth = month - 1 var monthDays = new Date(year,startMonth,0).getDate() var starDay = monthDays - (week - day)+1 for(var i=0;i<=start;i++) { if(day-start+i < 1) { this.dateRange[i] = this.changeDateFormat(year,startMonth,monthDays - (week - day)+1+i,'/') }else { this.dateRange[i] = this.changeDateFormat(year,month,(day-start+i),'/') } } this.startDate = this.changeDateFormat(year,startMonth,starDay,'/') }else {// 本周第一天和当天不同月不同年 // month = 12 // year-- var startYear = year - 1 var monthDays = new Date(startYear,12,0).getDate() var starDay = monthDays - (week - day)+1 for(var i=0;i<=start;i++) { if(day-start+i < 1) { this.dateRange[i] = this.changeDateFormat(startYear,12,monthDays - (week - day)+1+i,'/') }else { this.dateRange[i] = this.changeDateFormat(year,month,(day-start+i),'/') } } this.startDate = this.changeDateFormat(startYear,12,starDay,'/') } } // 今天到本周最后一天间隔多少天 var end = 7 - week var monthDays = new Date(year,month,0).getDate() if(day + end <= monthDays) { for(var i=0 ; i<end ; i++) { this.dateRange[start+1+i] = this.changeDateFormat(year,month,(day+i+1),'/') } this.endDate = this.changeDateFormat(year,month,(day+end),'/') }else { if(month + 1 <= 12 ) { // month++ var endMonth = month + 1 var endDay = end-(monthDays - day) for(var i=0 ; i<end ; i++) { if(day+i+1 > monthDays) { // 在下月的天数 this.dateRange[start+1+i] = this.changeDateFormat(year,endMonth,(day+i+1-monthDays),'/') }else {// 在本月的天数 this.dateRange[start+1+i] = this.changeDateFormat(year,month,(day+i+1),'/') } } this.endDate = this.changeDateFormat(year,endMonth,endDay,'/') }else { // month = 1 // year++ var endYear = year + 1 var endDay = end-(monthDays - day) for(var i =0; i< end;i++) { if(day+i+1 > monthDays) { // 在下月的天数 this.dateRange[start+1+i] = this.changeDateFormat(endYear,1,(day+i+1-monthDays),'/') }else {// 在本月的天数 this.dateRange[start+1+i] = this.changeDateFormat(year,month,(day+i+1),'/') } } this.endDate = this.changeDateFormat(endYear,1,endDay,'/') } } }, // 转换数字 changeNum(num) { if(num >= 10) { return num }else { return '0'+num } }, // 转换日期格式 changeDateFormat(year,month,day,str) { return year+str+this.changeNum(month)+str+this.changeNum(day) },
更简单的方法可查看 https://www.cnblogs.com/pyx-blog/p/14812598.html

浙公网安备 33010602011771号