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

时间:2014-06-13 20:34:42

标签: 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 = 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));
            }



        });

1 个答案:

答案 0 :(得分:0)

此行不正确:

c.setDate(a.getDate() + 1);

应该是:

c.setDate(c.getDate() + 1);

由于您永远不会更改a的日期,因此每次迭代都使用相同的日期。

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

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

你想要的是这个:

var c = new Date(a);

.getDate()仅返回月内的日期编号。