Figured it out. Turns out I was just being dense and lazy.
Here, for the future, is the general logic:
var enddate, finaldate, startyear, endyear, i;
startyear = 何々;
endyear = 何々;
enddate = new Date(endyear, 11, 31)
finaldate = new Date(enddate)
enddate.setDate(enddate.getDate() + 6)
for (i = new Date(startyear, 0, 1); i <= enddate; i.setDate(i.getDate()+6)) {
if (i > finaldate) {
console.log(finaldate);
} else {
console.log(i);
}
}