我想用JavaScript来生成当前日期的前四个星期日。 例如,如果当前日期是2018-3-1,我想得到2018-2-25,2018-2-18,2018-2-11,2018-2-4。
我有这个代码,但它只给了我当前日期的前一个星期日。 我怎样才能获得前四个星期日?
var dt = new Date();
var currentWeekDay = dt.getDay();
var lessDays = currentWeekDay == 0 ? 6 : currentWeekDay - 0;
var sunday = new Date(new Date(dt).setDate(dt.getDate() -
lessDays));
console.log(sunday);
一个想法是使用loop。将返回的星期日送回循环。 下面,我将返回的日期存储在一个数组中。
var date = new Date();
var loop_count = 4;
var days = [];
var prev_sunday;
var loop_index;
function getPreviousSunday(date) {
return new Date(
new Date(date).setDate(
date.getDate() - (date.getDay() || 7)
)
);
}
for (loop_index = 1; loop_index <= loop_count; loop_index++) {
prev_sunday = getPreviousSunday(prev_sunday || date);
days.push(prev_sunday);
}
console.log(date);
console.log(days);
这是一种方法,允许您调整哪一天以及过去几天的频率。
function findPreviousDay(oDate, day, occurence){
var weekday = [];
var prevDays = [];
weekday.sunday = 0;
weekday.monday = 1;
weekday.tuesday = 2;
weekday.wednesday = 3;
weekday.thursday = 4;
weekday.friday = 5;
weekday.saturday = 6;
for(i=0;i<occurence;i++){
prevDay = new Date(oDate).setDate(oDate.getDate()-oDate.getDay()+weekday[day.toLowerCase()]-i*7);
prevDays.push(new Date(prevDay));
}
return prevDays;
}
var d = new Date("3/1/2018");
listOfDays = findPreviousDay(d, "sunday",4);
listOfDays.forEach(function(day){
document.write(day+"<br/>");
});