因为项目中经常用到,所以把获取日期的方法写在main.js文件里,给Vue.prototype加全局方法,供所有页面使用。
获取当月的最后一天
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')
![EC135DB1-F183-41A6-97E7-868C900ABBF4.png](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/0b4fedb6a9f74729b630ca2a6f236a82~tplv-k3u1fbpfcp-watermark.image?)
距离当前日期的近多少(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