0

我想要一个 javascript 函数,它会给出当前 weeknumber,然后,当它有 weeknumber 时,从当前 weeknumber - X 中获取所有 weeknumbers 并且与未来相同,但是: currentweek必须在中心! 例子

Currentweek: 39, X: 3 该方法应返回:[38, 39 , 40]

Currentweek: 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 作为中心

就我所知,无法弄清楚闰年的问题

4

1 回答 1

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));

你可以在这里看到它

于 2014-09-25T05:30:34.040 回答