获取今天的周数,X周后期和X周前的javascript

时间:2014-09-24 14:01:39

标签: javascript date week-number leap-year

我想要一个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作为中心

就我而言,无法弄清楚闰年问题

1 个答案:

答案 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