簡體   English   中英

使用Dates對象時,while循環的行為異常

[英]While loop not behaving as expected using Dates objects

我正在制作一個數組,該數組以40分鍾的間隔存儲開始時間和之后的時間。

基本上檢查一下,將開始時間添加到數組,然后遞增重復。

  //Array Of All Available times.
  var timeArray = [];
  //Start time this begins with 9:00
  var startTime = new Date(`date setup here`);
  //End Time this is 17:00
  var endTime = new Date(`date setup here`);
  while (startTime < endTime) {
    //Push Start Time to Array
    timeArray.push(startTime);
    //Add 40 minutes to startTime
    startTime = new Date(startTime.setMinutes(startTime.getMinutes() +40));
  }

以下是日志的屏幕截圖:

開始和結束時間:

img

數組的日志:

img2

在數組中,我發現奇怪的是,為什么初始開始時間9不是索引0,為什么最后一個索引是結束時間,而while時間循環條件失敗了。

在您的循環中:

while (startTime < endTime) {
    //Push Start Time to Array
    timeArray.push(startTime);
    //Add 40 minutes to startTime
    startTime = new Date(startTime.setMinutes(startTime.getMinutes() +40));
}

最后一行將新的Date分配給變量之前 修改startTime Date對象。 因此,當.push()發生時,日期是正確的,但它會在循環的最后一行中更改。

相反,請先創建一個新日期,然后再進行更改:

while (startTime < endTime) {
    //Push Start Time to Array
    timeArray.push(startTime);
    //Add 40 minutes to startTime
    startTime = new Date(startTime);
    startTime.setMinutes(startTime.getMinutes() +40));
}

暫無
暫無

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

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