使用JavaScript循环遍历日期范围

185

如果有两个Date()对象,其中一个比另一个小,那么我如何在这两个日期之间循环每一天?

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

}

这种循环会起作用吗?但是如何在循环计数器中加一天?

谢谢!

12个回答

0
如果您想要以毫秒为单位的高效方式:
var daysOfYear = [];
for (var d = begin; d <= end; d = d + 86400000) {
    daysOfYear.push(new Date(d));
}

-2

基于Jayarjo的回答:

var loopDate = new Date();
loopDate.setTime(datFrom.valueOf());

while (loopDate.valueOf() < datTo.valueOf() + 86400000) {

    alert(loopDay);

    loopDate.setTime(loopDate.valueOf() + 86400000);
}

其中一个评论是,小于比较符号(<)比不等于符号(!=)更受欢迎,因为当循环遍历多个月份时,由于某种原因,不等于符号(!=)永远不会触发。 - Tom Gullen
1
除了夏令时之外,另一个边缘条件是“闰秒”。一秒的差异确实很重要 - 转换为毫秒的日期对应于给定日期的第一秒。一秒钟的误差会导致你落在前一天。 - Wojtek Kruszewski

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接