如何获得当前日期javascript的前4个星期日

问题描述 投票:0回答:2

我想用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);
javascript html date
2个回答
2
投票

一个想法是使用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);

0
投票

这是一种方法,允许您调整哪一天以及过去几天的频率。

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/>");
});

Try it out!

© www.soinside.com 2019 - 2024. All rights reserved.