This question already has answers here:
How to get first and last day of the week in JavaScript
                                
                                    (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/

10-10 01:17
查看更多