如何使用Moment库获取近6个月份存入数组并修复现有代码问题
问题排查与修正方案
你原有代码存在以下几个问题:
mom变量仅完成类型声明,未初始化赋值为当前时间的moment实例,调用方法直接报错- 局部定义的
numberOfMonths、previousSIxMonths为函数内局部变量,不应该通过this访问,同时变量名存在大小写拼写错误 - 月份偏移逻辑错误,循环内每次的偏移量计算不符合预期,且
format('MMMM')会输出月份全称,和你需要的缩写格式不符 - 直接对同一个moment实例执行
subtract会修改原实例本身,导致后续偏移计算出错
修正后代码
import * as moment from 'moment'; // 需提前确认项目已正确安装、导入moment库 ngOnInit(){ const monthCount = 6; const previousSixMonths: string[] = []; // 初始化moment实例为当前时间 const currentTime = moment(); for (let i = 0; i < monthCount; i++) { // 每次克隆原时间实例再做偏移,避免修改原时间导致计算错误 const targetMonth = currentTime.clone().subtract(i, 'months'); // MMM格式对应月份缩写,输出Oct、Sept这类符合你要求的格式 previousSixMonths.push(targetMonth.format('MMM')); } // 输出结果与预期一致,若需要在模板渲染,赋值给组件类属性即可 console.log(previousSixMonths); }
当前时间为10月时,上述代码输出结果为["Oct","Sept","Aug","July","June","May"],完全符合你的需求。
内容的提问来源于stack exchange,提问作者Satya ram
相关产品推荐
相关产品推荐

