下面我写了一个函数,计算出它们在两个给定日期之间的周数和周末天数,并将它们存储在一个数组中。但是,他们没有给出正确的结果。我无法弄清楚为什么。有什么指针吗?
数组返回[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));
}
});
答案 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()
仅返回月内的日期编号。