2014-04-16 75 views
0

在我開始之前,讓我只說我討厭JavaScript Date()對象!我真的很討厭它,我通常會使用類似date.js的庫,但是我必須使用我自己的JavaScript解決此問題....從今日開始在特定天數內輸出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()對象在哪裏我的循環出錯了。

在此先感謝

回答

2

由於你的循環,你將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); 
} 
+0

天啊!我真是個白癡!當然! –

1

您反覆使用同一對象。藉此,例如:

  1. 你開始與4月16日
  2. 您加1月16日,它成爲4月17日
  3. 現在,添加2日,這在目前是四月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); 
} 

或者作爲湯姆·費內奇說,你可以再補充+1而不是+i到當前的日期對象(d)。

相關問題