javascript指定日期增加自然月份(有闰年2月判断)

javascript指定日期增加自然月份(有闰年2月判断)

// An highlighted block
/**
 * 当前日期增加n月
 * @param dateStr 当前日期
 * @param num 月
 * @param type 0:2022-05-30   1:2022-05-30 11:11:11
 * @returns {string}
 */
    function commonAddMouth(dateStr,num,type) {
        var monthnum = 0;
        if (typeof (num) == "string"){
            monthnum = parseInt(num);
        }else{
            monthnum = num;
        }
        var dates= new Date(dateStr);
        //日期减一天
        var date = new Date(dates.setDate(dates.getDate()-1));
        //获取原日
        var day = date.getDate();

        //获取原月份
        var month=date.getMonth();
        //设置增加月份
        date.setMonth(date.getMonth() + (monthnum*1), 1);
        //获取增加的后的月份
        var Jmonth = date.getMonth()+1;
        //获取增加的后的年份
        var Jyear=date.getFullYear();

        if(Jmonth == 4 || Jmonth == 6 || Jmonth == 9 || Jmonth == 11) {
            //小月
            if (day > 30) {
                day = 30;
            }

        }else if (Jmonth == 2) {
            //判断增加后的年份是否闰年,如果是2月后一天等29
            if(((Jyear % 4) == 0) && ((Jyear % 100) != 0) || ((Jyear % 400) == 0)){
                if (day > 29) {
                    day = 29;
                } else if(day==28){
                    day = 29;
                }else {
                    day = day;
                }
            }else{
                if (day > 28) {
                    day = 28
                }
            }
        }else{
            //大月
            if (day > 31) {
                day = 31;
            }
        }
        var tHours = date.getHours();
        var tMinutes = date.getMinutes();
        var tSeconds = date.getSeconds();
        Jmonth = doHandleMonth(Jmonth);
        day = doHandleMonth(day);
        if(type=="0"){
            return Jyear+"-"+Jmonth+"-"+day;
        }
        return Jyear+"-"+Jmonth+"-"+day+" "+tHours+":"+tMinutes+":"+tSeconds;
    }
    /**
     *  日或月补0
     */
    function doHandleMonth(month){
        var m = month;
        if(month.toString().length == 1){
            m = "0" + month;
        }
        return m;
    }

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值