我想获取过去12个月的连续12个月图表。
这就是我正在做的
function formatDate(date) {
date = new Date(date);
var day = date.getDate();
var monthIndex = date.getMonth();
var year = date.getFullYear();
return day + ' ' + monthIndex + ' ' + year;
}
let now = new Date();
for ( let i=12; i>0; i--) {
let newdate = now.setMonth(now.getMonth() - i);
console.log(formatDate(newdate ));
}
这就是我所得到的:(完全不是我所期望的。)
19 1 2018
19 2 2017
19 4 2016
19 7 2015
19 11 2014
19 4 2014
19 10 2013
19 5 2013
19 1 2013
19 10 2012
19 8 2012
19 7 2012
我想要的
19 2 2018
19 3 2018
19 4 2018
19 5 2018
19 6 2018
19 7 2018
19 8 2018
19 9 2018
19 10 2018
19 11 2018
19 0 2019
19 1 2019
答案 0 :(得分:2)
更改
let newdate = now.setMonth(now.getMonth() - i);
到
let newdate = now.setMonth(now.getMonth() - 1);
很容易在您的原始代码中看到月份值减少了1,2,3,依此类推。在每次迭代中,您只需要减去1。
答案 1 :(得分:1)
setMonth
修改日期,但不返回修改后的副本。因此,第一次致电setMonth
时,您会将日期推迟了12个月。下次您将其移回11个月,总共需要23个月。然后将其移回10个月,总共33个月。
与其将日期不断地移回12 - i
,而是一次将其移回1个月:
now.setMonth(now.getMonth() - 1);
答案 2 :(得分:1)
更改此
now.getMonth() - i
对此
now.getMonth() - 1
function formatDate(date) {
date = new Date(date);
var day = date.getDate();
var monthIndex = date.getMonth();
var year = date.getFullYear();
return day + ' ' + monthIndex + ' ' + year;
}
let now = new Date();
for ( let i=12; i>0; i--) {
let newdate = now.setMonth(now.getMonth() - 1);
console.log(formatDate(newdate ));
}
答案 3 :(得分:1)
您只想减去1个月,所以不要使用i
,因为它是动态值。第一个循环不需要减法,如下所示
已更新:您需要在循环中移动当前日期声明,因为coz setMonth将更改您的日期值,因此每次循环时都需要调用当前日期...
function formatDate(date) {
date = new Date(date);
var day = date.getDate();
var monthIndex = date.getMonth();
var year = date.getFullYear();
return day + ' ' + monthIndex + ' ' + year;
}
for ( let i=11; i>=0; i--) {
let now = new Date();
let newdate = now.setMonth(now.getMonth() - i);
console.log(formatDate(newdate ));
}