我有一个开始年份和月份,例如2007年12月,以及结束年份和月份,例如2015年12月。开始日期和结束日期可能是同一天。
如何每个月循环并每次调用一个函数?
感谢。
答案 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
循环,它将遍历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)
}