首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用JavaScript遍历日期范围

使用JavaScript遍历日期范围
EN

Stack Overflow用户
提问于 2010-12-03 19:24:44
回答 8查看 158.9K关注 0票数 158

给定两个Date()对象,其中一个小于另一个,我如何在这两个日期之间每天循环?

代码语言:javascript
运行
复制
for(loopDate = startDate; loopDate < endDate; loopDate += 1)
{

}

这样的循环会起作用吗?但是我怎么才能给循环计数器增加一天呢?

谢谢!

EN

回答 8

Stack Overflow用户

发布于 2013-02-02 05:51:57

根据Tom Gullen的回答。

代码语言:javascript
运行
复制
var start = new Date("02/05/2013");
var end = new Date("02/10/2013");


var loop = new Date(start);
while(loop <= end){
   alert(loop);           

   var newDate = loop.setDate(loop.getDate() + 1);
   loop = new Date(newDate);
}
票数 83
EN

Stack Overflow用户

发布于 2018-04-02 05:01:56

我想我找到了一个更简单的答案,如果你允许自己使用Moment.js

代码语言:javascript
运行
复制
// cycle through last five days, today included
// you could also cycle through any dates you want, mostly for
// making this snippet not time aware
const currentMoment = moment().subtract(4, 'days');
const endMoment = moment().add(1, 'days');
while (currentMoment.isBefore(endMoment, 'day')) {
  console.log(`Loop at ${currentMoment.format('YYYY-MM-DD')}`);
  currentMoment.add(1, 'days');
}
代码语言:javascript
运行
复制
<script src="https://cdn.jsdelivr.net/npm/moment@2/moment.min.js"></script>

票数 14
EN

Stack Overflow用户

发布于 2010-12-03 19:36:27

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

代码语言:javascript
运行
复制
var startTime = startDate.getTime(), endTime = endDate.getTime();

然后,您可以从一个循环到另一个循环,将loopTime递增86400000 (1000*60*60*24) -一天中的毫秒数:

代码语言:javascript
运行
复制
for(loopTime = startTime; loopTime < endTime; loopTime += 86400000)
{
    var loopDay=new Date(loopTime)
    //use loopDay as you wish
}
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4345045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档