Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 计算两个日期之间的周数和周末数_Javascript_Jquery - Fatal编程技术网

Javascript 计算两个日期之间的周数和周末数

Javascript 计算两个日期之间的周数和周末数,javascript,jquery,Javascript,Jquery,下面我编写了一个函数,计算出两个给定日期之间的周天数和周末天数,并将它们存储在一个数组中。然而,他们没有给出正确的结果。我不明白为什么。有什么建议吗 数组返回的是[7,0,7],而不是[5,2,7] $(document).ready(function(){ var a = new Date(2014, 05, 12); var b = new Date(2014, 05, 19); var d = getDa

下面我编写了一个函数,计算出两个给定日期之间的周天数和周末天数,并将它们存储在一个数组中。然而,他们没有给出正确的结果。我不明白为什么。有什么建议吗


数组返回的是[7,0,7],而不是[5,2,7]

    $(document).ready(function(){

            var a = new Date(2014, 05, 12);
            var b = new Date(2014, 05, 19);


            var d = getDays(a, b);
            var e = getDays(a, b);

            console.log(e);
            console.log(d);

            function getDays(a, b){
                var days = new Array();

                days[0] = 0;
                days[1] = 0;
                days[2] = 0;

                var x = dayDiff(a, b);

                var c = new Date(a.getDate());

                for(var i = 0; i < x; i++) {
                    c.setDate(a.getDate() + 1);


                    switch(c.getDay()){
                        case 0:
                        case 6:
                            days[1] += 1;
                        break
                        case 1:
                        case 2:
                        case 3: 
                        case 4:
                        case 5:
                            days[0] += 1;
                        break;

                    }

                }

                days[2] = days[1] + days[0];

                return days;
            }

            function dayDiff(a, b) {
                return Math.round((b-a)/(1000*60*60*24));
            }



        });
$(文档).ready(函数(){
var a=新日期(2014年5月12日);
var b=新日期(2014年5月19日);
var d=getDays(a,b);
var e=获得天数(a,b);
控制台日志(e);
控制台日志(d);
函数getDays(a、b){
var days=新数组();
天数[0]=0;
天数[1]=0;
天数[2]=0;
var x=日差(a,b);
var c=新日期(a.getDate());
对于(变量i=0;i
此行不正确:

c.setDate(a.getDate() + 1);
var c = new Date(a.getDate());
应该是:

c.setDate(c.getDate() + 1);
由于您从未更改
a
的日期,因此每次迭代都使用相同的日期

编辑:此外,此行看起来不正确:

c.setDate(a.getDate() + 1);
var c = new Date(a.getDate());
你想要的是:

var c = new Date(a);

.getDate()
只返回月内的日期数。

我认为您可以得到周期中的天数,除以7,乘以2,并确定前两天/最后两天是周末(可能只有在没有整数的情况下)。然后调整以使其正确。您是否考虑了日期发生的一周中的哪一天?两个日期之间可能间隔10天,但最多可能包含两个周末,或者只有一个周末。数组返回的是[7,0,7],而不是[5,2,7]使用库,有太多的边缘案例,您无法浪费生命来尝试自己计算这些事情@JaredFarrish我也在想同样的事情…哎呀。那里有大量的垃圾。谢谢。顺便说一句,为了好玩,我写了一个更优化的方法来解决这个问题: