用While Loop &构建一个以年递增月份的函数;Momentjs
Building a function to increment months with years with While Loop & Momentjs
我正在尝试构建一个函数,允许我从当前月份增加x
月份的数量。我使用while loop
和momentjs
,我能够增加月份,但增加年份有问题。下面是代码:
const generateMonths = (count) => {
let
date = new Date(),
month = date.getMonth(),
year = date.getFullYear(),
months = 12 + count,
result = [];
while (month < months) {
if (month >= 12) {
let nextYear = year + 1;
result.push(moment().month(month++).format("MMMM") + ' ' + nextYear);
} else {
result.push(moment().month(month++).format("MMMM") + ' - ' + year);
}
}
return result;
};
console.log(generateMonths(24));
我得到的结果:
["August - 2016", "September - 2016", "October - 2016", "November - 2016", "December - 2016", "January 2017", "February 2017", "March 2017", "April 2017", "May 2017", "June 2017", "July 2017", "August 2017", "September 2017", "October 2017", "November 2017", "December 2017", "January 2017", "February 2017", "March 2017", "April 2017", "May 2017", "June 2017", "July 2017", "August 2017", "September 2017", "October 2017", "November 2017", "December 2017"]
年卡在2017
,因为增量只发生一次,正确的方法是什么?谢谢!
我更改了您的代码,使其按预期工作。请注意,即使在12之后,变量month
也会继续增加1,因此可以通过将month
除以12并取结果的整数部分来计算第一年和新年之间的差值。
const generateMonths = (count) => {
let
date = new Date(),
month = date.getMonth(),
year = date.getFullYear(),
months = 12 + count,
result = [];
while (month < months) {
let newYear = Math.floor(month / 12) + year;
result.push(moment().month(month++).format("MMMM") + ' ' + newYear);
}
return result;
};
console.log(generateMonths(24));
<script src="http://momentjs.com/downloads/moment.js"></script>
既然你在使用moment,你可以使用add
方法来简化你的代码。
编辑:在Ilan Hasanov评论之后,我使用while
而不是for
来修复结果。
下面是一个工作示例:
const generateMonths = (count) => {
let
date = moment(),
month = date.month(),
months = 12 + count,
result = [];
while (month < months) {
result.push( date.format("MMMM YYYY") );
date.add(1 ,'month');
month++;
}
return result;
}
console.log(generateMonths(24));
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment.min.js"></script>
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 将函数的上下文应用于javascript变量
- 如何在JavaScript中将字符串转换为函数引用
- 用嵌套函数和默认函数定义函数
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 无法导出函数expressjs/requestjs中的变量
- 函数参数中的数据与指定变量之间的任何性能差异
- JQuery合并了keyup和focusout两个函数
- ES6构造函数返回基类的实例
- 监视函数从服务返回不起作用,但作用域函数起作用
- 我可以在json对象中添加一个函数吗
- AngularJS:我可以跳过函数参数回调吗
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- jquery点击函数select&取消选择
- 使用 Momentjs 转换函数
- 扩展MomentJS以覆盖toString()函数
- t.format不是使用react datepicker和momentjs的函数
- 如何使用momentjs创建firstDayOfMonth和lastDayOfMonth函数
- 用While Loop &构建一个以年递增月份的函数;Momentjs