转载 https://juejin.cn/post/7008823505928060958
获取当月的最后一天
Vue.prototype.getLastDay = function(yearmonth) { let month = yearmonth.split('-')[1] var new_year = yearmonth.split('-')[0]; //取当前的年份 var new_month = month++; //取下一个月的第一天,方便计算(最后一天不固定) if (month > 12) { new_month -= 12; //月份减 new_year++; //年份增 } var new_date = new Date(new_year, new_month, 1); //取当年当月中的第一天 return (new Date(new_date.getTime() - 1000 * 60 * 60 * 24)).getDate(); //获取当月最后一天日期 }
近7天、近30天、昨天、近60天、本月、上月、最近12个月、最近10个月、本周、本年
Vue.prototype.sevenBefore = function (type) { //new Date() 获取当前日期和时间 var myDate = new Date(); var beforeseven = new Date(); var thirty = new Date(); var sixty = new Date(); var custom = new Date(); //x.getDate() 返回月份的某一天,当前myDate.getDate()是返回当月的当天~ 比如今天是2021年09月17号,返回的是17 //x.setDate() 设置月份的某一天,当前myDate.setDate(myDate.getDate())是设置为2021年09月17号 myDate.setDate(myDate.getDate()); beforeseven.setDate(beforeseven.getDate()-1 - 6); thirty.setDate(thirty.getDate()-1 - 29); sixty.setDate(sixty.getDate() - 59); //getMonth返回月份的数字,0(1月)-11(12月) // 最近7天 if (type === 0) { return [ beforeseven.getFullYear() + '-' + Twodigits(beforeseven.getMonth() + 1) + '-' + Twodigits(beforeseven.getDate()), myDate.getFullYear() + '-' + Twodigits(myDate.getMonth() + 1) + '-' + Twodigits(myDate.getDate()) ]; } else if (type === 1) { // 最近30天 return [ thirty.getFullYear() + '-' + Twodigits(thirty.getMonth() + 1) + '-' + Twodigits(thirty.getDate()), myDate.getFullYear() + '-' + Twodigits(myDate.getMonth() + 1) + '-' + Twodigits(myDate.getDate()) ]; } else if (type === 2) { // 昨天 var yesterday = this.getDay(-1, '-'); return [ yesterday, yesterday ]; } else if (type === 3) { //最近60天 return [ sixty.getFullYear() + '-' + Twodigits(sixty.getMonth() + 1) + '-' + Twodigits(sixty.getDate()), myDate.getFullYear() + '-' + Twodigits(myDate.getMonth() + 1) + '-' + Twodigits(myDate.getDate()) ]; } else if (type === 4) { // 本月 var getLastMonthStartDate = new Date(new Date().getFullYear(), new Date().getMonth(), 1); var monthEndDate = new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate()); return [formatDate(getLastMonthStartDate), formatDate(monthEndDate)]; } else if (type === 5) { // 上月 var lastMonthStartDate = new Date(new Date().getFullYear(), new Date().getMonth() - 1, 1); var date = new Date(); var day = new Date(date.getFullYear(), date.getMonth(), 0).getDate(); var lastMonthEndDate = new Date(new Date().getFullYear(), new Date().getMonth() - 1, day); return [formatDate(lastMonthStartDate), formatDate(lastMonthEndDate)]; } else if (type === 6) { // 最近12个月 var dataArr = []; var data = new Date(); data.setMonth(data.getMonth() + 1); for (var i = 0; i < 12; i++) { data.setMonth(data.getMonth() - 1); dataArr.push(data.getFullYear() + '-' + Twodigits((data.getMonth()))); } return [dataArr[11], dataArr[0]]; } else if (type === 7) { // 最近10个月 var DataArr = []; var Data = new Date(); Data.setMonth(Data.getMonth() + 1); for (var ten = 0; ten < 10; ten++) { Data.setMonth(Data.getMonth() - 1); DataArr.push(Data.getFullYear() + '-' + Twodigits((Data.getMonth() + 1))); } return [DataArr[9], DataArr[0]]; } else if (type === 8) {//本周 var current=new Date(); var firstDay = new Date(current.getFullYear(),current.getMonth(),current.getDate()-current.getDay()+1); return [moment(firstDay).format('YYYY-MM-DD'),moment(current).format('YYYY-MM-DD')] } else if (type === 9){ //本年 var firstDay = new Date(); firstDay.setDate(1); firstDay.setMonth(0); var now = new Date(); return [moment(firstDay).format('YYYY-MM-DD'),moment(now).format('YYYY-MM-DD')] } }; function Twodigits(num) { return num < 10 ? '0' + num : num; } Vue.prototype.getDay = function (num, str) { var today = new Date(); var nowTime = today.getTime(); var ms = 24 * 3600 * 1000 * num; today.setTime(parseInt(nowTime + ms)); var oYear = today.getFullYear(); var oMoth = (today.getMonth() + 1).toString(); if (oMoth.length <= 1) oMoth = '0' + oMoth; var oDay = today.getDate().toString(); if (oDay.length <= 1) oDay = '0' + oDay; return oYear + str + oMoth + str + oDay; }; function formatDate(date) { var myYear = date.getFullYear(); var myMonth = date.getMonth() + 1; var myWeekday = date.getDate(); if (myMonth < 10) { myMonth = '0' + myMonth; } if (myWeekday < 10) { myWeekday = '0' + myWeekday; } return (myYear + '-' + myMonth + '-' + myWeekday); }
在需要使用到的页面里直接调用即可。
console.log(this.sevenBefore(0),'0') console.log(this.sevenBefore(1),'1') console.log(this.sevenBefore(2),'2') console.log(this.sevenBefore(3),'3') console.log(this.sevenBefore(4),'4') console.log(this.sevenBefore(5),'5') console.log(this.sevenBefore(6),'6') console.log(this.sevenBefore(7),'7') console.log(this.sevenBefore(8),'8') console.log(this.sevenBefore(9),'9') 
距离当前日期的近多少(aa)天/后多少(aa)天
Vue.prototype.fun_date = function(aa){ var date1 = new Date(), time1=date1.getFullYear()+"-"+Twodigits(date1.getMonth()+1)+"-"+Twodigits(date1.getDate());//time1表示当前时间 var date2 = new Date(date1); date2.setDate(date1.getDate()+aa); var time2 = date2.getFullYear()+"-"+Twodigits(date2.getMonth()+1)+"-"+Twodigits(date2.getDate()); return time2; } //调用 获取距离今天日期的前两天的日期 console.log(this.fun_date(-2)) //2021-09-15