Javascript jquery查找从给定日期算起的前12个月的日期
在这里,在jquery中,我试图查找给定日期之前12个月的日期。但是,之前12个月的日期是错误的Javascript jquery查找从给定日期算起的前12个月的日期,javascript,jquery,date,Javascript,Jquery,Date,在这里,在jquery中,我试图查找给定日期之前12个月的日期。但是,之前12个月的日期是错误的 > var now = new Date(); > var months = new Array( "January", "February", "March", "April", "May","June", "July", "August", "September", "October", "November", > "December"); > f
> var now = new Date();
> var months = new Array( "January", "February", "March", "April", "May","June", "July", "August", "September", "October", "November",
> "December");
> for(var i=0; i<=11;i++){
> var past = now.setMonth(now.getMonth() -i);
> console.log(months[now.getMonth()]+' '+now.getFullYear());
> }
当您在
now
上调用setMonth
时,它会处理该日期,因此下次进入循环时,它不再是now
的原始值,而是减去递增计数器
潜在的解决方案是将基于now
的新日期对象存储在循环中,然后对其进行操作,将now
单独留下
var now = new Date();
var months = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
for (var i = 0; i <= 11; i++) {
var past = new Date(now); // @talemyn ;)
past.setMonth(now.getMonth() - i);
console.log(months[past.getMonth()] + ' ' + past.getFullYear());
}
你所要做的就是改变:
now.getMonth() - i
对此
now.getMonth() - 1
就这样。因为您现在在循环的每个迭代中修改,
,所以只需减去一个月,而不是循环变量
请参见此处的工作示例:
还请注意,您的
pass
变量在这一点上没有任何作用,因此您的循环可以如下所示:
for(var i=0; i<=11;i++){
now.setMonth(now.getMonth() - 1);
console.log(months[now.getMonth()]+' '+now.getFullYear());
}
for(var i=0;我与我将要发布的解决方案最为相同,不同的是我使用了var pass=new Date(now);
,因为创建now
和pass
之间的时间差可能导致不同的月份。下面的答案有帮助吗?
now.getMonth() - 1
for(var i=0; i<=11;i++){
now.setMonth(now.getMonth() - 1);
console.log(months[now.getMonth()]+' '+now.getFullYear());
}