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我也在想同样的事情…哎呀。那里有大量的垃圾。谢谢。顺便说一句,为了好玩,我写了一个更优化的方法来解决这个问题: