JavaScript - 从当前日期获取一周的第一天

2022-08-30 01:17:12

我需要最快的方法来获得一周的第一天。例如:今天是11月11日,星期四;我想要本周的第一天,即11月8日,以及星期一。我需要MongoDB地图功能的最快方法,有什么想法吗?


答案 1

使用 Date 对象的方法,您可以知道一周中的天数(0=星期日,1=星期一等)。getDay

然后,您可以将该天数减去一,例如:

function getMonday(d) {
  d = new Date(d);
  var day = d.getDay(),
      diff = d.getDate() - day + (day == 0 ? -6:1); // adjust when day is sunday
  return new Date(d.setDate(diff));
}

getMonday(new Date()); // Mon Nov 08 2010

答案 2

不知道它的性能如何比较,但这有效。

var today = new Date();
var day = today.getDay() || 7; // Get current day number, converting Sun. to 7
if( day !== 1 )                // Only manipulate the date if it isn't Mon.
    today.setHours(-24 * (day - 1));   // Set the hours to day number minus 1
                                         //   multiplied by negative 24
alert(today); // will be Monday

或者作为一个函数:

# modifies _date_
function setToMonday( date ) {
    var day = date.getDay() || 7;  
    if( day !== 1 ) 
        date.setHours(-24 * (day - 1)); 
    return date;
}

setToMonday(new Date());