我想要一个javascript函数,它会给出当前周数,然后,当它有周数时,从当前周数中得到所有周数 - X和未来相同,但是:当前周必须位于中心位置! 示例:
当前周刊:39,X:3该方法应该返回:[38, 39 ,40]
当前周:20 X:4方法应该返回:[18,19, 20 ,21]
这看起来很简单,但是:请记住,闰年可能会发生,有些年份 53周
此外,x的范围可以是3到30
因为这个概念有点难以解释我已经制作了一个简单的形象:
目的:这将在日历类别的应用中使用,您可以在其中滚动数周。
到目前为止我的尝试:
获取当前周数(到目前为止已有效,但我不知道它是否会在2015年有效)
Date.prototype.getWeek = function() {
var onejan = new Date(this.getFullYear(), 0, 1);
var weekNumber = Math.ceil((((this - onejan) / 86400000) + onejan.getDay() + 1) / 7);
return weekNumber; }
确定当前周数的数组位置:
myActiveSlide = Math.floor(X/2);
如果是偶数,这将向上舍入,例如,X = 4,它将返回3作为中心,
如果不均匀,这将给出确切的中心,例如:X = 3它将返回2作为中心
就我而言,无法弄清楚闰年问题
答案 0 :(得分:0)
我强烈建议您使用javascript库,例如moment.js。 以下是许多解决方案的一个例子。
var weeks = function(currentWeek,numberOfWeeks) {
var m = Math.floor(numberOfWeeks/2);
var r = [];
for (i=0;i < numberOfWeeks; i+=1) {
var d = -1*m + i;
r.push(moment(currentWeek).add(moment.duration(d,'week')).isoWeek())
}
return r;
}
console.log('2014-W39 3 weeks span');
console.log(weeks('2014-W39',3));
console.log('2014-W39 4 weeks span');
console.log(weeks('2014-W39',4));
console.log('2000-W52 leap year ');
console.log(weeks('2000-W52',4));
console.log('2004-W52 53 weeks ');
console.log(weeks('2004-W52',5));
您可以在行动中here