【问题标题】:iterate throught between two dates in javascript [closed]在javascript中的两个日期之间迭代[关闭]
【发布时间】:2014-05-20 16:29:08
【问题描述】:

我是 JavaScript 新手,在 javascript 中的给定范围之间迭代日期时卡住了。 请帮我解决这个问题。 我有 2 个日期,一个是开始日期,另一个是结束日期。循环应该从开始日期迭代到结束日期。对于每个迭代开始日期应该增加一天。 提前致谢

【问题讨论】:

标签: javascript


【解决方案1】:

你应该使用moment.js然后使用

moment().add('days', 1);

整个代码如下所示:

let startDate = moment("2017-10-21");
let endDate = moment().add(-1, 'days');  // for yesterday
for (let date = moment(startDate); date.diff(endDate) < 0; date.add(1, 'days')) {

}

希望我理解正确。

【讨论】:

  • 谢谢,这在 v.2.9.0 时仍然有效,但您需要在增量器中切换 args 的顺序(不推荐使用这种方式)。现在应该是date.add(1, 'days')
【解决方案2】:

您可以使用 Date.setDate() 方法的技巧:它会更改月份中的某天,但如果您尝试设置超出月份范围 (1-30/31) 的日期,它会尝试相应地更改整个日期.

var startDate = new Date(), // Current moment
    endDate = new Date(startDate.getTime() + 50*24*60*60*1000), // Current moment + 50 days
    iDate = new Date(startDate); // Date object to be used as iterator
while (iDate <= endDate) {
    console.log(iDate.toString());
    iDate.setDate(iDate.getDate() + 1); // Switch to next day
}

也适用于“for”:

var startDate = new Date(),
endDate = new Date(startDate.getTime() + 50*24*60*60*1000);

for (var iDate = new Date(startDate); iDate < endDate; iDate.setDate(iDate.getDate() + 1)) {
    console.log(iDate.toString());
}

【讨论】:

    【解决方案3】:
       var one_day=1000*60*60*24;
    
        // Convert both dates to milliseconds
       var date1_ms = date1.getTime();
      var date2_ms = date2.getTime();
    
       enter code here
    
      -- Calculate the difference in milliseconds
       var difference_ms = date2_ms - date1_ms;
       var diff=Math.round(difference_ms/one_day); 
    
        for(var i=0;i<diff;i++)
         {
           // here your calculatiuon
         }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-05
      • 2020-05-16
      相关资源
      最近更新 更多