如何使用Moment.js根据数据库年月对象获取正确月份?
解决Moment.js月份转换的索引问题
Moment.js的月份参数是**0-based(从0开始计数)**的:0对应1月,1对应2月,2对应3月,以此类推。你从数据库拿到的month:2是实际的二月,但直接传给Moment会被识别为三月,所以出现了输出偏差。
解决方法:
- 直接调整传入的月份值,减1后再传给Moment:
moment({year: 2023, month: 2 - 1}).format("MMM YY")
执行后会输出Feb 23,符合你的预期。
- 如果需要多次处理这类数据,可以封装一个工具函数:
function dbDateToMoment(dbObj) { return moment({ year: dbObj.year, month: dbObj.month - 1 }); } // 调用示例 dbDateToMoment({month: 2, year: 2023}).format("MMM YY") // 输出 Feb 23
只要数据库返回的月份是1-based(1代表1月、2代表2月),就需要通过减1来适配Moment的月份索引规则。
内容的提问来源于stack exchange,提问作者Bhavya Ardeshana
相关产品推荐
相关产品推荐

