This question already has answers here:
How to get first and last day of the week in JavaScript
(17个答案)
4年前关闭。
我正在使用一个函数来返回一年中给定星期数的开始和结束日期。这是函数:
我动态设置年份,让我们看一个年份为
问题在于此代码不考虑从星期四开始的2015年。
有人有线索吗?
-编辑-
我的问题与this one不同,因为我没有一年中的给定日期,所以我只有一年中的第几周(从0到51),并且我的情况认为该年的第一周是如likeitlikeit所述,只有整周的一部分。
初始代码有2个主要区别。
对于一年中的一周,我只得到一年中的第一天,然后根据一周中的某天开始,就可以找到一周的结束日
对于其他几周,我将
如果有人有更好的解决方案,我将很乐意听。
(17个答案)
4年前关闭。
我正在使用一个函数来返回一年中给定星期数的开始和结束日期。这是函数:
function getWeekRange(week){
var d = new Date("Jan 01, " + $scope.today.getFullYear() + " 01:00:00");
var w = d.getTime() + 604800000 * (week);
var d1 = new Date(w);
var d2 = new Date(w + 518400000);
return {
startDate: d1,
endDate: d2,
};
}
我动态设置年份,让我们看一个年份为
2015
的示例。考虑从0开始的星期数,如果我使用getWeekRange(0)
,我将收到以下结果:{
startDate: Thu Jan 01 2015 01:00:00 GMT-0200 (BRST),
endDate: Wed Jan 07 2015 01:00:00 GMT-0200 (BRST)
}
问题在于此代码不考虑从星期四开始的2015年。
getWeekRange(0)
的正确结果应为:{
startDate: Thu Jan 01 2015 01:00:00 GMT-0200 (BRST),
endDate: Sat Jan 03 2015 01:00:00 GMT-0200 (BRST)
}
getWeekRange(1)
的结果应为:{
startDate: Sun Jan 04 2015 01:00:00 GMT-0200 (BRST),
endDate: Sat Jan 10 2015 01:00:00 GMT-0200 (BRST)
}
有人有线索吗?
-编辑-
我的问题与this one不同,因为我没有一年中的给定日期,所以我只有一年中的第几周(从0到51),并且我的情况认为该年的第一周是如likeitlikeit所述,只有整周的一部分。
最佳答案
我可以为我的问题找到一个简单的解决方案,因为只有一年的第一周才会给我带来麻烦。这是代码:
function getWeekRange(week){
var d = new Date("Jan 01, " + $scope.today.getFullYear() + " 01:00:00");
var firstWeekDays = 7 - d.getDay();
var d1, d2;
if(week > 0) {
var w = d.getTime() + 604800000 * (week-1) + 24*60*60*1000 * firstWeekDays;
d1 = new Date(w);
d2 = new Date(w + 518400000);
} else {
d1 = d;
d2 = new Date(d1.getTime() + 24*60*60*1000 * (6 - d1.getDay()));
}
return {
startDate: d1,
endDate: d2,
};
}
初始代码有2个主要区别。
对于一年中的一周,我只得到一年中的第一天,然后根据一周中的某天开始,就可以找到一周的结束日
对于其他几周,我将
7*week-1
天与第一天相加(此总和不考虑第一周的天数),还加上firstWeekDays
这是第一周的天数(因为不是其他星期总是7点)。如果有人有更好的解决方案,我将很乐意听。
关于javascript - 考虑周中开始的年份,获取周的开始和结束日期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30403654/