Moment.js 日期加天数后格式化失败问题排查
问题原因
Moment.js 默认对/分隔的日期字符串采用MM/DD/YYYY(月/日/年)规则解析,和你传入的DD/MM/YYYY(日/月/年)格式不匹配,直接导致两个异常:
- 第一个测试用例
24/05/2021被解析为24月5日2021年,月份超出合法范围,因此返回无效日期 - 第二个测试用例
05/06/2021被解析为5月6日2021年,加365天后格式化为DD/MM/YYYY时输出06/05/2022,和你预期的日/月顺序完全相反
修复方案
调用moment构造方法时,通过第二个参数明确指定入参的日期解析格式即可,修改后代码如下:
addDays(date){ return moment(date, "DD/MM/YYYY").add(365, 'd').format("DD/MM/YYYY"); }
验证结果
修改后你的测试用例输出完全符合预期:
addDays("24/05/2021")返回24/05/2022addDays("05/06/2021")返回05/06/2022
内容的提问来源于stack exchange,提问作者Geoff
相关产品推荐
相关产品推荐

