簡體   English   中英

JavaScript while循環具有日期的怪異行為

[英]Javascript while loop weird behavior with dates

我目前正在從以下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變量的范圍,但不確定如何解決此問題。

任何幫助是極大的贊賞

您的迭代器不正確。 您甚至根本不需要迭代器。 只需在while循環的第二行中添加1而不是i,然后刪除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; 等等

假設開始和結束是您的日期變量:

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

循環迭代1:日期為20,然后添加0 => 20

循環迭代2:日期為20,然后加上1 => 21

循環迭代3:日期為21,然后加上2 => 23

循環迭代4:日期為23,然后加上3 => 26

要獲得您期望的結果,請嘗試以下操作:

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

如果您通過代碼調試,則可能會看到循環的每次迭代,您都在用不同的值修改日期- i在循環中每次都在更改。 第一次通過更新日期0 ,然后1 ,然后2 ,等等。這是你在輸出看到的。

i替換為1 ,您將獲得預期的輸出。 實際上,您甚至不需要i

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM