Javascriptdate范围之间的循环

给定两个Date()对象,其中一个比另一个less,我如何在date之间每天循环?

for(loopDate = startDate; loopDate < endDate; loopDate += 1) { } 

这种循环会起作用吗? 但是我怎样才能在循环计数器中添加一天呢?

谢谢!

这里有一种方法可以通过使用添加一天的方式来使date在必要时翻转到下一个月,而不会在毫秒之间搞乱。 夏令时也不是问题。

 var now = new Date(); var daysOfYear = []; for (var d = new Date(2012, 0, 1); d <= now; d.setDate(d.getDate() + 1)) { daysOfYear.push(new Date(d)); } 

请注意,如果要存储date,则需要创build一个新new Date(d) (如上面的new Date(d) ),否则,最终每个存储的date都是循环中d的最终值。

根据汤姆Gullen的答案。

  var start = new Date("02/05/2013"); var end = new Date("02/10/2013"); while(start < end){ alert(start); var newDate = start.setDate(start.getDate() + 1); start = new Date(newDate); } 

最好的祝福。

如果startDate和endDate确实是date对象,则可以将它们转换为自1970年1月1日午夜以来的毫秒数,如下所示:

 var startTime = startDate.getTime(), endTime = endDate.getTime(); 

然后你可以从一个循环到另一个递增循环时间86400000(1000 * 60 * 60 * 24) – 一天中的毫秒数:

 for(loopTime = startTime; loopTime < endTime; loopTime += 86400000) { var loopDay=new Date(loopTime) //use loopDay as you wish } 
 var start = new Date("2014-05-01"); //yyyy-mm-dd var end = new Date("2014-05-05"); //yyyy-mm-dd while(start <= end){ var mm = ((start.getMonth()+1)>=10)?(start.getMonth()+1):'0'+(start.getMonth()+1); var dd = ((start.getDate())>=10)? (start.getDate()) : '0' + (start.getDate()); var yyyy = start.getFullYear(); var date = dd+"/"+mm+"/"+yyyy; //yyyy-mm-dd alert(date); start = new Date(start.setDate(start.getDate() + 1)); //date increase by 1 } 

基于Tabare的答案,我不得不再增加一天,因为这个循环之前被切断了

 var start = new Date("02/05/2013"); var end = new Date("02/10/2013"); var newend = end.setDate(end.getDate()+1); var end = new Date(newend); while(start < end){ alert(start); var newDate = start.setDate(start.getDate() + 1); start = new Date(newDate); } 

根据Jayarjo的回答:

 var loopDate = new Date(); loopDate.setTime(datFrom.valueOf()); while (loopDate.valueOf() < datTo.valueOf() + 86400000) { alert(loopDay); loopDate.setTime(loopDate.valueOf() + 86400000); } 

更好的方法是将date转换为数字数据types,然后使用增量为86400000的循环