js獲取當前日期的上個月的日期(不同的日期格式)

//處理日期格式
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這個方法進行修改。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章