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

时间:2015-12-14 04:48:29

标签: javascript date

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

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

感谢。

3 个答案:

答案 0 :(得分:0)

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

转换为总月数

我会执行以下操作:将monthes \ years转换为整数值,该值表示从Common Era开头传递的monthes数。然后,您可以轻松地遍历它。

以下是工作片段:

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循环,它将遍历monthes。

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/>";
});

此外,您可以使用JavaScript Date 对象。

答案 1 :(得分:0)

使用时刻

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>

答案 2 :(得分:0)

我明白了。

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)
}