为了账号安全,请及时绑定邮箱和手机立即绑定

javascript 中日期的setDate()方法问题?

javascript 中日期的setDate()方法问题?

潇潇雨雨 2018-07-26 16:26:24
如下使用循环,每次日期减去7天,后可以得到对应的7天前的日期。var date=new Date();for(i=0;i<10;i++){date.setDate(date.getDate()-7);console.log(date);}接下来,使用方法封装一个每次减去7的函数function changedate(date){var datenew=new Date();datenew.setDate(date.getDate()-7);return datenew;}然后再去用循环调用这个方法,输出的结果每次跨月份的时候,就不正常,这是什么原理?var date=new Date();for(i=0;i<10;i++){date=changedate(date);console.log(date);}
查看完整描述

1 回答

?
噜噜哒

TA贡献1784条经验 获得超7个赞

function changedate(date){
date.setDate(date.getDate()-7);
return date;
}
setDate只有一个天的参数,不是日期。下面是MDN的函数说明:
dateObj.setDate(dayValue)
Parameters
dayValue
An integer representing the day of the month.
类似你做的,在函数里如果新建一个日期,那返回的永远是当月和前月的日期。
运行一下下面的代码,可能更直观。跨月时date.getDate()-7返回的是一个负值。
var date=new Date();
for(i=0;i<10;i++){
date=changedate(date);
console.log(date.getDate()-7);
console.log(date);
}


查看完整回答
反对 回复 2018-07-31
  • 1 回答
  • 0 关注
  • 1558 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信