通过 js 接口获取传入日期的下个月具体日期

/*
* 从已知日期或当前日期开始计算下一个月的日期
* 通过 getNextMoth("yyyy-MM-dd") 或 getNextMoth() 调用方法
* nowDate 格式为 "yyyy-MM-dd"
* 返回值类型格式为 "yyyy-MM-dd"
* */
function getNextMoth(nowDate) {
    let date, year, month, day;
    if (nowDate === null || nowDate === ""){ // 判断是否有参数
        date = new Date(),
            year = date.getFullYear(),
            month = date.getMonth() + 1,
            day = date.getDate();
    } else {
        let obj = nowDate.split("-");
        year = parseInt(obj[0], 10);
        month = parseInt(obj[1], 10);
        day = parseInt(obj[2], 10);
    }
    let b_year, b_month, b_day;
    if (month === 12){ // 如果为 12 月,进一年
        b_year = year + 1;
    } else {
        b_year = year;
    }
    let b_month_arr = [3, 5, 8, 10];
    if (b_month_arr.includes(month) && day === 31){ // 如果月份是大月,则要处理 31 号
        b_month = month + 2;
        b_day = 1;
    } else if (month === 1 && ((year % 4 === 0 && year % 100 != 0)
        || year % 400 === 0) && day >= 29){ // 若是闰年 1 月,则要处理大于 29 号的日子
        if (day === 29) {
            b_month = month + 1;
            b_day = day;
        } else {
            b_month = month + 2;
            b_day = day % 29;
        }
    } else if (month === 1 && !((year % 4 === 0 && year % 100 != 0)
        || year % 400 === 0) && day >= 28){ // 若不是闰年且是 1 月,则要处理大于 28 号的日子
        if (day === 29) {
            b_month = month + 1;
            b_day = day;
        } else {
            b_month = month + 2;
            b_day = day % 28;
        }
    } else {
        b_month = month + 1 > 12 ? (month + 1) % 12 : month + 1;
        b_day = day;
    }
    let t_month = b_month + "";
    if (b_month < 10){ // 如果月份小于 10,在其前面加上 0
        t_month = "0" + t_month;
    }
    let t_day = b_day + "";
    if (b_day < 10){ // 如果日期小于 10,在其前面加上 0
        t_day = "0" + t_day;
    }
    let b_Date = (b_year + "-" + t_month + "-" + t_day).toString();
    return b_Date; // return 拼接结果
}

当我们在前端需要获取当前日期或者传入日期的下一个月具体日期时,可以调用该接口,在前端界面需要导入该js文件

<script src="${pageContext.request.contextPath}/statics/js/getNextMonth.js"></script>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值