[英]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);
}
您正在反復使用同一對象。 以這個為例:
- 您從4月16日開始
- 您將1添加到4月16日,它將變成4月17日
- 現在,您將2添加到日期(目前是4月17日),因此它變為4月19日
- 現在,您將3添加到日期(目前是4月19日),因此它變為4月22日
- ...
你應該明白我在說什么。 最后,您應該執行以下操作:
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.