项目有个需求,三个月内的数据 颜色要有区别,所以需要写个通过月份获得对应时间的方法
网上找了一些,部分可用,但是有个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 欢迎回复