Javascript 如何从一个月的日期开始计算星期几?

Javascript 如何从一个月的日期开始计算星期几?,javascript,Javascript,我想在Javascript中查找一周中某一天的所有日期,例如八月中所有周一的日期。我找不到必要的逻辑,请帮忙 谢谢如果您使用Moment.js,您可以使用.day()函数滚动一个月中的几天,注意哪些天与目标日期相对应: 如果你做了大量的日期工作,我衷心推荐Momente.js,因为它提供了大量的日期计算、比较、格式化、解析等功能。类似这样的功能 function getDays(year, month, day) { var last = (new Date(year, month -

我想在Javascript中查找一周中某一天的所有日期,例如八月中所有周一的日期。我找不到必要的逻辑,请帮忙


谢谢

如果您使用Moment.js,您可以使用.day()函数滚动一个月中的几天,注意哪些天与目标日期相对应:

如果你做了大量的日期工作,我衷心推荐Momente.js,因为它提供了大量的日期计算、比较、格式化、解析等功能。

类似这样的功能

function getDays(year, month, day) {
    var last = (new Date(year, month - 1, 0)).getDate(),
        days = {
        'sunday'    : 0,
        'monday'    : 1,
        'tuesday'   : 2,
        'wednesday' : 3,
        'thursday'  : 4,
        'friday'    : 5,
        'saturday'  : 6

    },
        dd      = days[day],
        d       = new Date(year, month - 1, 1),
        matches = [];

    for (var i=1; i<=last; i++) {
        d.setDate(i);
        if (d.getDay() == dd) matches.push(i)
    }
    return matches;
}

getDays(2014, 8, 'saturday'); // [2, 9, 16, 23, 30] <- dates that are saturday
函数getDays(年、月、日){
var last=(新日期(年,月-1,0)).getDate(),
天数={
“星期日”:0,
"星期一":,
"星期二":二,,
"星期三":,
"星期四":,
"星期五":五,,
“星期六”:6
},
dd=天[天],
d=新日期(年,月-1,1),
匹配项=[];
对于(var i=1;i该方法返回给定的星期几。它返回0表示星期天,1表示星期一等。您可以检查该值,查看一个月内的每个日期是否与指定的日期匹配。要获取特定月份内的所有星期一,您可以执行以下操作:

var daysInMonth = function(year, month, day) {
  var currentDate = new Date(year, month);

  // Find where the first day in the month is relative to 'day'
  var delta = day - currentDate.getDay();

  // If 'day' is earlier in the week, move to the next week
  if (delta < 0) {
    delta += 7;
  }  

  var days = [];

  currentDate.setDate(currentDate.getDate() + delta);

  while (currentDate.getMonth() === month) {
    days.push(currentDate.getDate());
    currentDate.setDate(currentDate.getDate() + 7);
  }
  return days;
};

console.log(daysInMonth(2014, 7 /* August */, 1 /* Monday */));
var daysInMonth=函数(年、月、日){
var currentDate=新日期(年、月);
//查找月份的第一天相对于“天”的位置
var delta=day-currentDate.getDay();
//如果“天”在本周的早些时候,则转到下一周
if(δ<0){
δ+=7;
}  
风险值天数=[];
currentDate.setDate(currentDate.getDate()+delta);
while(currentDate.getMonth()==月){
推送(currentDate.getDate());
currentDate.setDate(currentDate.getDate()+7);
}
返程天数;
};
console.log(daysInMonth(2014年8月7日,星期一);

此代码查找与您关心的星期几相匹配的当月第一个日期。然后,它会在每周循环,将该周的日期添加到列表中,直到您到达月末。

到目前为止,您尝试过什么吗?这与我想要的最接近。谢谢