获取用户设置 '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(如果是星期日)。
我有一个日历应用程序,用户可以从下拉列表中选择 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(如果是星期日)。