JS获得当前日期的前后月份对应日期

项目有个需求,三个月内的数据 颜色要有区别,所以需要写个通过月份获得对应时间的方法

网上找了一些,部分可用,但是有个bug 就是不能跨年,所以自己改造了一版

 /**
         * 获得当前日期 前/后月份对应日期
         * @param month 负数代表往前,正数代表往后
         * @returns {string}
         */
        function getTimeByMonth(month) {
            var time = new Date();
            var year = time.getFullYear();
            var monthTemp = time.getMonth() + 1 + month;
            if (monthTemp > 0) {
                var mod = parseInt(monthTemp / 12) - ((Math.abs(monthTemp) % 12 == 0 ? 1 : 0));
                year += mod;
                month = monthTemp - (12 * mod);//获取当前月份的日期 d
            } else {
                //0月即为去年12月
                var mod = Math.floor((monthTemp == 0 ? -1 : monthTemp) / 12) - ((Math.abs(monthTemp) % 12 == 0 ? 1 : 0));
                year += mod;
                month = Math.abs(monthTemp + (12 * Math.abs(mod)));//获取当前月份的日期 d
            }
            var day = time.getDate();
            return year + "/" + month + "/" + day + " " + time.getHours() + ":" + time.getMinutes() + ":" + time.getMilliseconds();
        }

贴上测试结果

console.log("getTimeByMonth(-3)=" + getTimeByMonth(-3))
        console.log("getTimeByMonth(-6)=" + getTimeByMonth(-6))
        console.log("getTimeByMonth(-16)=" + getTimeByMonth(-16))
        console.log("getTimeByMonth(-28)=" + getTimeByMonth(-28))
        console.log("getTimeByMonth(-29)=" + getTimeByMonth(-29))

        console.log("getTimeByMonth(0)=" + getTimeByMonth(0))
        console.log("getTimeByMonth(5)=" + getTimeByMonth(5))
        console.log("getTimeByMonth(8)=" + getTimeByMonth(8))
        console.log("getTimeByMonth(9)=" + getTimeByMonth(9))
        console.log("getTimeByMonth(20)=" + getTimeByMonth(20))
        console.log("getTimeByMonth(21)=" + getTimeByMonth(21))

页面Console打印结果:
在这里插入图片描述
注:如果发现bug 欢迎回复

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值