Javascript while循环奇怪的行为与日期

时间:2014-09-26 22:56:53

标签: javascript date

我目前从javascript中的以下while循环中获得了奇怪的行为。

var i = 0;
var endDate = new Date();
var startDate = new Date();
startDate.setDate(startDate.getDate() - 6);

while (start <= end){
  alert (start.getDate());
  start.setDate(start.getDate() + i);
  i++;
}

我期望的输出(假设今天是9月26日)将是:

20 21 22 23 24 25 26

但是我得到以下输出

20 20 21 23 26

我认为我没有正确处理startDate变量的范围,但我不确定如何解决这个问题。

非常感谢任何帮助

3 个答案:

答案 0 :(得分:1)

你的迭代器不正确。你甚至不需要迭代器。只需将1而不是i添加到while循环的第二行,并删除var i = 0和i ++。

var endDate = new Date();
var startDate = new Date();
startDate.setDate(startDate.getDate() - 6);

while (startDate <= endData){
  alert (start.getDate());
  start.setDate(start.getDate() + 1);
}

你得到20 20 21 23 26的原因是因为在第一个循环中你回来了六天,并且加零;你回来六天的第二个循环,加一个;你回来五天的第三个循环加2;第四个循环你现在三天回来了,加了3个;等

答案 1 :(得分:1)

假设开始和结束是您的日期变量:

while (start <= end){
  alert (start.getDate());
  start.setDate(start.getDate() + i);
  i++;
}

循环迭代1:日期是20,你添加0 =&gt; 20

循环迭代2:日期是20,你加1 =&gt; 21

循环迭代3:日期是21,你加上2 =&gt; 23

循环迭代4:日期为23,你添加3 =&gt; 26

为了得到你所期望的,试试这个:

while (start <= end){
  alert (start.getDate());
  start.setDate(start.getDate() + 1);
  i++;
}

答案 2 :(得分:0)

如果您通过代码进行调试,您可能会看到循环的每次迭代都会以不同的值修改日期 - i每次都会在循环中发生变化。首次按0更新日期,然后按1更新日期,然后2等等。这是您在输出中看到的内容。

i替换为1,您就可以获得预期的输出。事实上,你甚至不需要i