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 欢迎回复

猜你喜欢

转载自blog.csdn.net/u013204622/article/details/89532020