JS获取当前前一个月的日期,前两个月的日期
js获取当前日期前一个月,一年的时间日期
·
起因
今天收到需求要实现一个获取当前时间前一个月的日期,前两个月,前三个月,前一年,前两年日期时间的需求
于是我就去网上找了个帖子,按照他给的方法小改一下,废话不多说直接上代码【注意目前不支持往后的时间日期,可以参考我这个来加shi山】
语法
this.getXmonthToday(-1) //获取当前时间前1个月的日期 2022-1124 获取到的是2022-10-24
this.getXmonthToday(-6) //获取当前时间前0个月的日期
this.getXmonthToday(-10) //获取当前时间前10个月的日期
this.getXmonthToday(-12) //获取当前时间前一年的日期
this.getXmonthToday(-24) //获取当前时间前两年的日期
this.getXmonthToday(-25) //获取当前时间前两年零一个月的日期 20022-110-24 获取到的是 2022-11-24
源码
封装方法
getXmonthToday(type) {
// type 0 是当天 -1 是上个月 1是下个月
var now = new Date(); // 可以传值调式 now = new Date(2019,2,30); 今天是3月30号
var year = now.getFullYear(); //getYear()+1900=getFullYear()
var month = now.getMonth() + 1; //0-11表示1-12月
var day = now.getDate(); // 当天日期
if (parseInt(month) < 10) {
month = '0' + month;
}
if (parseInt(day) < 10) {
day = '0' + day;
}
now = year + '-' + month + '-' + day; // 如果取当月日期可直接 return 返回
let msum = Math.abs(type);
// console.log(parseInt(msum / 12))
var preMonth = 0; //月值
let preSizes = 0; //上月总天数
if (parseInt(msum / 12) === 1) {
//一年
// console.log("一整年")
preMonth = parseInt(month);
if (parseInt(month) === 12) {
preSizes = new Date(year - 1, parseInt(month), 0).getDate();
if (day > preSizes) {
// console.warn(parseInt(year) - 1 + '-'+ preMonth +'-' + preSizes)
return parseInt(year) - 1 + '-' + preMonth + '-' + preSizes;
} else {
// console.warn(parseInt(year) - 1 + '-'+ preMonth +'-' + day)
return parseInt(year) - 1 + '-' + preMonth + '-' + day;
}
} else {
// console.log("********")
preSizes = new Date(year - 1, parseInt(month), 0).getDate();
// console.log(preSizes)
preMonth = preMonth < 10 ? '0' + preMonth : preMonth; // 获取上个月的值
if (parseInt(day) > preSizes) {
// console.warn(parseInt(year) - 1 + '-'+ preMonth +'-' + preSizes)
return parseInt(year) - 1 + '-' + preMonth + '-' + preSizes;
} else {
// console.warn(parseInt(year) - 1 + '-'+ preMonth +'-' + day)
return parseInt(year) - 1 + '-' + preMonth + '-' + day;
}
}
} else if (parseInt(msum / 12) > 1) {
//两年,三年
// console.log("两年")
preMonth = parseInt(month);
if (parseInt(month) === 12) {
// console.warn(preMonth)
preSizes = new Date(year - 1, parseInt(month), 0).getDate();
if (day > preSizes) {
// console.warn(parseInt(year) - 1 + '-'+ preMonth +'-' + preSizes)
return parseInt(year) - parseInt(msum / 12) + '-' + preMonth + '-' + preSizes;
} else {
// console.warn(parseInt(year) - 1 + '-'+ preMonth +'-' + day)
return parseInt(year) - parseInt(msum / 12) + '-' + preMonth + '-' + day;
}
} else {
// console.log("********")
preSizes = new Date(year - parseInt(msum / 12), parseInt(month), 0).getDate();
// console.log(preSizes)
// console.log(Math.abs(msum) % 12)
if (Math.abs(msum) % 12 === 0) {
// console.log("整年")
preMonth = preMonth < 10 ? '0' + preMonth : preMonth; // 获取上个月的值
if (parseInt(day) > preSizes) {
// console.warn(parseInt(year) - parseInt(msum / 12) + '-'+ preMonth +'-' + preSizes)
return parseInt(year) - parseInt(msum / 12) + '-' + preMonth + '-' + preSizes;
} else {
// console.warn(parseInt(year) - parseInt(msum / 12) + '-'+ preMonth +'-' + day)
return parseInt(year) - parseInt(msum / 12) + '-' + preMonth + '-' + day;
}
} else {
// console.log(Math.abs(msum) % 12)
// console.log("两年多")
preMonth = parseInt(preMonth - (Math.abs(msum) % 12));
preMonth = preMonth < 10 ? '0' + preMonth : preMonth; // 获取上个月的值
if (parseInt(day) > preSizes) {
// console.warn(parseInt(year) - parseInt(msum / 12) + '-'+ preMonth +'-' + preSizes)
return parseInt(year) - parseInt(msum / 12) + '-' + preMonth + '-' + preSizes;
} else {
// console.warn(parseInt(year) - parseInt(msum / 12) + '-'+ preMonth +'-' + day)
return parseInt(year) - parseInt(msum / 12) + '-' + preMonth + '-' + day;
}
}
}
// return parseInt(year) - parseInt(msum / 12) + '-'+ preMonth +'-' + preSizes;
} else {
//小于一年
if (parseInt(month) === msum) {
preMonth = parseInt(month) + 1;
preMonth = preMonth < 10 ? '0' + preMonth : preMonth; // 获取上个月的值
preSizes = new Date(year - 1, parseInt(month), 0).getDate();
if (day > preSizes) {
return parseInt(year) - 1 + '-' + preMonth + '-' + preSizes;
} else {
console.warn(parseInt(year) - 1 + '-' + preMonth + '-' + day);
return parseInt(year) - 1 + '-' + preMonth + '-' + day;
}
} else {
preSizes = new Date(year, parseInt(month), 0).getDate();
if(parseInt(month) > msum){
preMonth = parseInt(month) - msum;
}else if(parseInt(month) === msum){
year = Number(year) - 1;
preMonth = 12;
}else{
year = Number(year) - 1;
preMonth = 12 - (msum - parseInt(month))
}
preMonth = preMonth < 10 ? '0' + preMonth : preMonth; // 获取上个月的值
if (day > preSizes) {
return parseInt(year) + '-' + preMonth + '-' + preSizes;
} else {
return parseInt(year) + '-' + preMonth + '-' + day;
}
}
}
},
程序员必备技能
有bug勿喷,可以再品论区回复
更多推荐
已为社区贡献1条内容
所有评论(0)