每三迭代递增1天

时间:2019-01-24 19:48:44

标签: javascript date

我正尝试使用模数每隔三次迭代增加date变量中的天数。

我认为我每三遍迭代就对了,但是这一天并没有增加1。我环顾四周,有很多建议使用date.setDate(date.getDate() + 1);,这就是我正在尝试的方法,但事实并非如此。不能产生我想要的结果。它会增加一次,但是日期不会增加。

这是我尝试过的代码:

for (let i = 0; i < 10; i++) {
  let date = new Date();
  if (i % 3 == 0) {
    date.setDate(date.getDate() + 1);
    console.log(date);
  }
}

4 个答案:

答案 0 :(得分:1)

问题在于,您需要在循环的每次迭代中创建一个新的Date对象。为了解决这个问题,您只需要像这样将date的声明移出它即可:

let date = new Date();

for (let i = 0; i < 10; i++) {
  if (i % 3 == 0) {
    date.setDate(date.getDate() + 1);
    console.log(date);
  }
}

答案 1 :(得分:1)

在循环之外声明日期。您每次都在重置它。

let date = new Date();
for (let i = 0; i < 10; i++) {
  if (i % 3 == 0) {
    date.setDate(date.getDate() + 1);
    console.log(date);
  }
}

答案 2 :(得分:1)

这是因为每次循环时都要定义date变量,将其移到外部

let date = new Date();

for (let i = 0; i < 10; i++) {
  if (i % 3 == 0) {
    date.setDate(date.getDate() + 1);
    console.log(i, date);
  }
}

答案 3 :(得分:1)

要实现所需的功能,请考虑将date变量移出循环,如下所示。另请参阅以下代码段中的文档,以详细了解其工作原理和原因:

/* 
Consider shifting "date" outside of loop. This
will give you a reference point on which the
increment can be accumulated during iteration
*/
let date = new Date();

for (let i = 0; i < 10; i++) {
 
  if (i % 3 == 0) {

    /*
    Increment the day of the date object that
    is outside of the loop. Because the date
    object is defined outside of the loop, this
    causes the increments to be "remembered" 
    between loop iterations
    */
    date.setDate(date.getDate() + 1);
    console.log(date);
  }
}