我在Javascript中编写的函数存在问题。我想在开始和结束之间获得一系列日期。
功能:
function getDateArray(startDate, endDate) {
var dateArray = new Array(),
currentDate = new Date(startDate),
lastDay = new Date(endDate);
while (currentDate <= lastDay) {
if (!(currentDate.getUTCDay() === 0 || currentDate.getUTCDay() === 6)) {
//currentDate.toUTCString(); //This line is redundant
dateArray.push(currentDate);
}
currentDate.setDate(currentDate.getDate() + 1);
}
return dateArray;
}
每当我用两个日期调用此函数时,如:
开始日期= 2015年10月6日 和结束日期= 2015年12月10日
我得到了不想要的结果:
Tue Oct 13 2015 00:00:00 GMT+0200 (South Africa Standard Time)
Tue Oct 13 2015 00:00:00 GMT+0200 (South Africa Standard Time)
Tue Oct 13 2015 00:00:00 GMT+0200 (South Africa Standard Time)
Tue Oct 13 2015 00:00:00 GMT+0200 (South Africa Standard Time)
Tue Oct 13 2015 00:00:00 GMT+0200 (South Africa Standard Time)
Tue Oct 13 2015 00:00:00 GMT+0200 (South Africa Standard Time)
Tue Oct 13 2015 00:00:00 GMT+0200 (South Africa Standard Time)
如果有人可以向我强调这里有什么问题吗?
答案 0 :(得分:1)
这是因为您每次都在推送对currentDate的引用(因为日期是复杂类型,它们是通过引用传递的)
只需替换它:
dateArray.push(currentDate);
由此:
dateArray.push(new Date(currentDate));