我有一个日历应用程序,用户可以从下拉列表中选择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
将是一周中的最后一个日期)
答案 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(如果是星期天)。