簡體   English   中英

在JavaScript循環中輸出從今天到特定天數的日期

[英]Outputting dates in a JavaScript loop from today until specific number of days

在開始之前,我只想說說我多么討厭JavaScript Date()對象! 我真的很討厭它,我通常會使用像date.js這樣的庫,但是對於這個問題,我必須使用自己的JavaScript。

好的,我希望創建一個從今天到特定日期或特定天數的日期數組...在此示例中,我將其設置為多個特定天數(例如365)。 稍后,我將使用此數組來填充選擇。

我希望捕獲今天的日期,然后向其添加一個整數以獲取下一個日期,然后是下一個,依此類推,等等……並將這些日期格式設置為dd / mm / yyyy(我沒有包括此部分)。

所以這是我的代碼,我注意到我的循環在第二個索引/循環之后的幾天開始跳躍/丟失

 var today = new Date(),
     dd = today.getDate(),
     mm = today.getMonth() + 1,
     yyyy = today.getFullYear(),
     today,
     startDate,
     d,
     i,
     dateArray = [];

    if( dd < 10 ){
        dd='0' + dd
    } 

    if( mm < 10 ){
        mm='0' + mm
    }

    startDate = yyyy +'-'+ mm +'-' + dd;
    d = new Date(startDate)

    for(i = 0; i < 365; i++){
        d.setDate(d.getDate() + i);
            // I will format 'd' to dd/mm/yyyy later
            dateArray.push(d)
        console.log(d);
    }

我的控制台正在記錄以下內容(我已經顯示了前4個輸出來演示我的問題),請注意我們如何錯過星期五,然后是星期天和星期一:

> Wed Apr 16 2014 02:00:00 GMT+0200 (CEST) 
> Thu Apr 17 2014 02:00:00 GMT+0200 (CEST) 
> Sat Apr 19 2014 02:00:00 GMT+0200 (CEST) 
> Tue Apr 22 2014 02:00:00 GMT+0200 (CEST)

我顯然正在以錯誤的方式進行操作,有人可以建議我如何正確使用Date()對象以及我的循環哪里出問題了。

提前致謝

由於循環的原因,您要將1,2,3加到d 如果希望它們連續,則將+ i更改為+ 1 ,例如:

for(i = 0; i < 365; i++){
    d.setDate(d.getDate() + 1);
    // I will format 'd' to dd/mm/yyyy later
    dateArray.push(d)
    console.log(d);
}

您正在反復使用同一對象。 以這個為例:

  1. 您從4月16日開始
  2. 您將1添加到4月16日,它將變成4月17日
  3. 現在,您將2添加到日期(目前是4月17日),因此它變為4月19日
  4. 現在,您將3添加到日期(目前是4月19日),因此它變為4月22日
  5. ...

你應該明白我在說什么。 最后,您應該執行以下操作:

d = new Date(startDate)

for(i = 0; i < 365; i++){
  c = new Date().setDate(d.getDate() + i);
  dateArray.push(c)
  console.log(c);
}

或者,如湯姆·費內奇(Tom Fenech)所說,您可以在當前日期對象( d )中添加+1而不是+i

暫無
暫無

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

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