js实现日期的加减

  想要实现一个利用js的Date对象加减日期的方法,如果按照下图的写法,就会有很大的问题,因为涉及到每个月天数的判断,改变天是否应该改变月,月的改变是否引起年的变化,太复杂了吧,这里涉及到联动改变的问题,如下方法是上面效果的错误展示:

<script>
//y:要加减的年 m:月 d:天
function getDateStr(y,m,d){
	var date = new Date();  
    var year = date.getFullYear()+y;  
    var month = date.getMonth() + 1+m;  
    var day = date.getDate()+d;  
    return year+"-"+check(month)+"-"+check(day);
}
function check(val) {  
    if (val < 10) {  
        return "0" + val;  
    } else {  
        return val;  
    }  
}  
console.log(getDateStr(0,0,100));
</script>

执行结果:2018-03-101,因为今天是2018-03-01,这肯定不对啊,最起码要智能的改变月和年吧,其实没这么复杂,关键还是要熟练运用JavaScript的Date对象,正确的写法如下:

<script>
//y:年 m:月 d:天
function getDateStr(y,m,d){
	var date = new Date();  
	//根据传入的年月日调用date对应的set方法
	date.setFullYear(date.getFullYear()+y);
	date.setMonth(date.getMonth()+m);  
	date.setDate(date.getDate()+d) ;
    var year =   date.getFullYear();
    var month = date.getMonth()+1;
    var day =  date.getDate();
    return year+"-"+check(month)+"-"+check(day);
}
function check(val) {  
    if (val < 10) {  
        return "0" + val;  
    } else {  
        return val;  
    }  
}  
console.log(getDateStr(0,0,100));
</script>

执行结果:2018-06-09。需要注意getMonth()的返回值是0-11,不要乱+1,在最后取出来的时候var month = date.getMonth()+1;加上1就可以了。


版权声明:本文为xiaozhuangyumaotao原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。