[英]Get start date and end date of current week (week start from monday and end with sunday )
[英]Get start and end of week with the start on Monday and end on Sunday in Javascript
function getStartAndEndOfWeek(date) {
var curr = date ? new Date(date) : new Date();
var first = curr.getDate() - curr.getDay();
var firstday = new Date(curr.setDate(first));
var lastday = new Date(curr.setDate(firstday.getDate() + 6));
return [firstday, lastday];
}
我无法将一周的开始设置为星期一。 上面的代码将第一天作为星期日。 此外,如果我们添加 first plus one,它将以星期一为开始,但问题在于让我们说(06/29/2014,星期日)是输入,它应该返回(06/23/2014 作为开始和 06 /29/2014) 作为结尾。 我们怎样才能做到这一点? 如果我添加“first + 1”,它将返回 06/30/2014 作为开始日期和 07/06/2014 作为结束日期。 有什么帮助吗? 谢谢。
回答:
function getStartAndEndOfWeek(date) {
//Calculating the starting point
var curr = date ? new Date(date) : new Date();
var first = curr.getDate() - dayOfWeek(curr);
var firstday, lastday;
if (first < 1) {
//Get prev month and year
var k = new Date(curr.valueOf());
k.setDate(1);
k.setMonth(k.getMonth() - 1);
var prevMonthDays = new Date(k.getFullYear(), (k.getMonth() + 1), 0).getDate();
first = prevMonthDays - (dayOfWeek(curr) - curr.getDate());
firstday = new Date(k.setDate(first));
lastday = new Date(k.setDate(first + 6));
} else {
// First day is the day of the month - the day of the week
firstday = new Date(curr.setDate(first));
lastday = new Date(curr.setDate(first + 6));
}
return [firstday, lastday];
}
function dayOfWeek(date, firstDay) {
var daysOfWeek = {
sunday: 0,
monday: 1,
tuesday: 2,
wednesday: 3,
thursday: 4,
friday: 5,
saturday: 6,
};
firstDay = firstDay || "monday";
var day = date.getDay() - daysOfWeek[firstDay];
return (day < 0 ? day + 7 : day);
}
如何制作一种简单的方法来让您轻松地控制一周的第一天:
(function() {
var original = Date.prototype.getDay;
var daysOfWeek = {
sunday: 0,
monday: 1,
tuesday: 2,
wednesday: 3,
thursday: 4,
friday: 5,
saturday: 6,
};
Date.prototype.getDay = function(weekBegins) {
weekBegins = (weekBegins || "sunday").toLowerCase();
return (original.apply(this) + 7 - daysOfWeek[weekBegins]) % 7;
};
})();
然后,您可以简单地使用:
var first = curr.getDate() - curr.getDay("monday"),
last = first + 6;
您可以通过移动getDay()的结果,然后将结果取模,首先将其设置为星期一。
var first = curr.getDate() - ((curr.getDay() + 6) % 7);
简单多了
var numberdayweek = [6,0,1,2,3,4,5]; fecha = new Date(); console.log(numberdayweek[fecha.getDay()]);
找到其他解决方案:
const getDayIndexMondaySunday = (date) =>date.getDay() === 0 ? 6 : date.getDay() - 1 // Result on Today console.log(getDayIndexMondaySunday(new Date()));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.