将日期对象存储到数组

Tho*_*mmy 3 javascript for-loop date

我有两个日期,并希望在数组之间保存日期(加上开始日期和结束日期)

    var date1 = new Date("Sep 23, 2013 12:00:00"); // Monday
    var date2 = new Date("Sep 26, 2013 12:00:00"); // Thursday

    var alldates = [];

    for (var i=0; date1 <= date2; date1.setDate(date1.getDate() + 1), i++) {
        alldates.push(date1);
        }

    alert(alldates.join('\n'));
Run Code Online (Sandbox Code Playgroud)

使用此代码alert(alldates.join('\n'));显示以下内容

    Fri Sep 27 2013 12:00:00 GMT+0200
    Fri Sep 27 2013 12:00:00 GMT+0200
    Fri Sep 27 2013 12:00:00 GMT+0200
    Fri Sep 27 2013 12:00:00 GMT+0200
Run Code Online (Sandbox Code Playgroud)

我是Javascript的新手,希望得到进一步的理解,所以感谢您解释为什么alert没有显示

    Mon Sep 23 2013 12:00:00 GMT+0200
    Tue Sep 24 2013 12:00:00 GMT+0200
    Wed Sep 25 2013 12:00:00 GMT+0200
    Thu Sep 26 2013 12:00:00 GMT+0200
Run Code Online (Sandbox Code Playgroud)

jau*_*tte 11

您遇到的问题是您推送date1对象的引用.在循环中更改日期时,更新对象,但所有引用仍指向同一对象.

您需要推送日期的文本表示或date1对象的副本

for (var i=0; date1 <= date2; date1.setDate(date1.getDate() + 1), i++) {
    alldates.push(new Date(date1));
    }

alert(alldates.join('\n'));
Run Code Online (Sandbox Code Playgroud)

如建议的那样,使用while循环

while( date1 <= date2 ) {
  alldates.push(new Date(date1));
  date1.setDate( date1.getDate() +1 );
} 
Run Code Online (Sandbox Code Playgroud)