获取用户设置的第一天DATE对象的第一个日期'一周的第一天'值

时间:2015-01-11 12:26:43

标签: javascript datetime

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

星期日星期一

作为一周的第一天。

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

AND当前日期为sunday 11th january 2015(dayIndex 0)

我从哪里知道FirstDateOfWeek是

- > monday 12th january 2015

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

而不是

- > monday 5th january 2015

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

1 个答案:

答案 0 :(得分:3)

如果一周的第一天是星期日,则从该日期的第一个星期日中扣除日期编号。如果星期一是第一天,请执行日期 - ((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(如果是星期天)。