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就可以了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值