//處理日期格式
function formate(data, format) {
data = new Date(data);
var o = {
"M+": data.getMonth() + 1, //月
"d+": data.getDate(), //日
"h+": data.getHours(), //時
"m+": data.getMinutes(), //分
"s+": data.getSeconds(), //秒
}
if(/(y+)/.test(format)) {
format = format.replace(RegExp.$1, (data.getFullYear() + "").substr(4 - RegExp.$1.length));
}
for(var k in o) {
if(new RegExp("(" + k + ")").test(format)) {
format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
}
}
return format;
}
//獲取當前日期的上個月日期
function getLastMonth(style = 'yyyy-MM'){
let date = formate(new Date(),'yyyy/MM/dd');
var arr = date.split('/');
var year = arr[0]; //當前年
var month = arr[1]; //當前月
var day = arr[2]; //當前日
var days = new Date(year, month, 0);
days = days.getDate(); //獲取當前月的天數
var year2 = year;
var month2 = parseInt(month) - 1;
if(month2 == 0) {
year2 = parseInt(year2) - 1;
month2 = 12;
}
var day2 = day;
var days2 = new Date(year2, month2, 0);
days2 = days2.getDate();
if(day2 > days2) {
day2 = days2;
}
if(month2 < 10) {
month2 = '0' + month2;
}
var t2 = year2 + '/' + month2 + '/' + day2;
let t3 = formate(t2,style);
return t3;
}
使用:
let d1 = getLastMonth('yyyy-MM-dd');
let d2 = getLastMonth('yyyy_MM--===dd');
console.log(d1) //2020-02-29
console.log(d2) //2020_02--===29
可以適用於正常(d1)及非正常(d2)的日期格式.
注:formate方法可以具體處理到時分秒的日期格式,但是獲取當前日期的上一個月的日期是沒有對時分秒進行處理的,只能具體到天,想要具體到時分秒的話,需要對getLastMonth這個方法進行修改。