如何从Javascript或Typescript中的常规日期列表中过滤当前周的日期?

flp*_*lpn 2 javascript date typescript

我有一个包含多个日期的数组,从这个数组中,我想返回一个只包含属于当前周的日期的数组.我怎样才能做到这一点?

Min*_*our 5

关于这一点的唯一困难的部分是找到一周的时间框架.要做到这一点,你可以这样做:

function getWeekDates() {

  let now = new Date();
  let dayOfWeek = now.getDay(); //0-6
  let numDay = now.getDate();

  let start = new Date(now); //copy
  start.setDate(numDay - dayOfWeek);
  start.setHours(0, 0, 0, 0);


  let end = new Date(now); //copy
  end.setDate(numDay + (7 - dayOfWeek));
  end.setHours(0, 0, 0, 0);

  return [start, end];
}

let [start, end] = getWeekDates();

console.log(start.toLocaleString(), end.toLocaleString());
Run Code Online (Sandbox Code Playgroud)

现在,过滤它们:

function filterDatesByCurrentWeek(dates){
   let [start, end] = getWeekDates();
   return dates.filter(d => +d >= +start && +d < +end);
}
Run Code Online (Sandbox Code Playgroud)

这假设您的日期是日期对象.如果不是,您将需要一种方法来解析它们并获取日期对象.