JS转换ISO日期为MM/DD/YYYY时12月误转为下年1月的问题
问题原因
- JavaScript
Date构造函数接收年、月、日三个参数时,月份参数遵循0起始的计数规则:0对应公历1月,1对应2月,……,11才对应12月。 - 你拆分ISO字符串得到的月份值是
'12',直接传入构造函数时超出了0~11的合法月份范围,JS日期处理逻辑会自动做溢出进位:月份12会自动进位为下一年的1月,所以最终得到的时间戳对应的是次年1月的日期。
修复方案
只需要在传入月份参数时减1即可,示例代码如下:
// 此时bill.date_paid的值为 '2021-12-03T00:00:00.000Z' let isoDateString = new Date(bill.date_paid).toISOString().split('T')[0].split('-'); // 月份参数减1匹配0起始规则 bill.date_paid = new Date(isoDateString[0], Number(isoDateString[1]) - 1, isoDateString[2]).getTime();
内容的提问来源于stack exchange,提问作者CodeConnoisseur
相关产品推荐
相关产品推荐

