瀟瀟雨雨
2018-07-26 16:26:24
如下使用循環(huán),每次日期減去7天,后可以得到對(duì)應(yīng)的7天前的日期。var date=new Date();for(i=0;i<10;i++){date.setDate(date.getDate()-7);console.log(date);}接下來(lái),使用方法封裝一個(gè)每次減去7的函數(shù)function changedate(date){var datenew=new Date();datenew.setDate(date.getDate()-7);return datenew;}然后再去用循環(huán)調(diào)用這個(gè)方法,輸出的結(jié)果每次跨月份的時(shí)候,就不正常,這是什么原理?var date=new Date();for(i=0;i<10;i++){date=changedate(date);console.log(date);}
1 回答

嚕嚕噠
TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超7個(gè)贊
function changedate(date){
date.setDate(date.getDate()-7);
return date;
}
setDate只有一個(gè)天的參數(shù),不是日期。下面是MDN的函數(shù)說(shuō)明:
dateObj.setDate(dayValue)
Parameters
dayValue
An integer representing the day of the month.
類(lèi)似你做的,在函數(shù)里如果新建一個(gè)日期,那返回的永遠(yuǎn)是當(dāng)月和前月的日期。
運(yùn)行一下下面的代碼,可能更直觀??缭聲r(shí)date.getDate()-7返回的是一個(gè)負(fù)值。
var date=new Date();
for(i=0;i<10;i++){
date=changedate(date);
console.log(date.getDate()-7);
console.log(date);
}
添加回答
舉報(bào)
0/150
提交
取消