获取用户设置 'first day of week' 值的星期 DATE 对象的第一个日期

Get the first date of week DATE object for the user set 'first day of week' value

我有一个日历应用程序,用户可以从下拉列表中选择 2 个值:

星期日星期一

作为一周的第一天。

鉴于用户设置为一周的第一天:'monday'(dayIndex 1)

并且当前日期是 sunday 11th january 2015(dayIndex 0)

我从哪里知道 FirstDateOfWeek 是

--> monday 12th january 2015

(其中“sunday 18th january 2015”将是一周的最后一个日期)

而不是

--> monday 5th january 2015

(那么 sunday 11th january 2015 将是一周的最后一个日期)

如果一周的第一天是星期天,则从日期中减去天数得到该周的第一个星期日。如果星期一是第一天,则执行 Date - ((dayNumber || 7) - 1)。在函数中:

/**
 * Given a Date, return a new Date object for the first
 * day of the week.
 * @param {Date} date - date object
 * @param {boolean} mon - true if week starts on Monday, otherwise starts on Sunday
*/
function getFirstDayOfWeek(date, mon) {

  // copy date object
  date = new Date(+date);

  if (mon) {
    date.setDate(date.getDate() - (date.getDay() || 7) + 1);

  } else {
    date.setDate(date.getDate() - date.getDay());
  }
  return date;
}

// Sun 11 Jan 2015
var date = new Date(2015, 0, 11)

console.log(getFirstDayOfWeek(date));       // Sun 11 Jan 2015
console.log(getFirstDayOfWeek(date, true)); // Mon 05 Jan 2015

所以您只需要存储用户选择的一周中的哪一天开始,然后传递 true(如果是星期一)或 false(如果是星期日)。