JavaScript-在数月和数年中循环,每次执行操作

JavaScript - Cycle through months and years, performing action each time

本文关键字:执行 操作 循环 JavaScript-      更新时间:2023-09-26

我有一个开始的年份和月份,例如2007年12月,还有一个结束的年份和月,例如2015年12月。开始日期和结束日期可以是相同的日期。

如何循环每个月并每次调用一个函数?

谢谢。

使用力矩

var month = (moment(moment('1/12/2015')).diff(moment(moment('1/12/2007')), 'month'))
for (var i=0;i<month;i++){
console.log("ssss")
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.6/moment.min.js"></script>

我想明白了。

var date_start = new Date(2007, 11)     // remember months start with 0
var date_end = new Date(2015, 11)       // remember months start with 0
var date_count = date_start
while (date_count <= date_end)
{
    alert(date_count.toString())
    date_count.setMonth(date_count.getMonth() + 1)
}

有很多方法可以做到这一点。

转换为月份总数

我会做以下操作:将月''年转换为一个整数值,它表示从Common Era开始经过的月数。然后,您可以轻松地对其进行迭代

以下是工作片段:

function iterateThroughMonthes(monthFrom, yearFrom, monthTo, yearTo, callback)
{
  var totalMonthFrom = yearFrom * 12 + (monthFrom - 1);
  var totalMonthTo = yearTo * 12 + (monthTo - 1);
  
  for (var i = totalMonthFrom; i <= totalMonthTo; i++) {
    callback(Math.floor(i / 12), i % 12 + 1);
  }
}
// From June, 2014 to December, 2015
iterateThroughMonthes(6, 2014, 12, 2015, function(m, y) { 
    document.body.innerHTML += m + "." + y + "<br/>";
});

While循环

您可以制作一个简单的while循环,它将在几个月内迭代。

function iterateThroughMonthes(monthFrom, yearFrom, monthTo, yearTo, callback)
{
  while (yearFrom < yearTo || yearFrom === yearTo && monthFrom <= monthTo)
  {
    callback(monthFrom++, yearFrom);
    if (monthFrom === 13)
    {
    	monthFrom = 1;
        yearFrom++;
    }
  }
}
// From June, 2014 to December, 2015
iterateThroughMonthes(6, 2014, 12, 2015, function(m, y) { 
    document.body.innerHTML += m + "." + y + "<br/>";
});

此外,您还可以使用JavaScriptDate对象。