JS 字符串转时间为何会出现月份错位?
js 字符串转时间误差问题
在将字符串转为时间时,可能会遇到月份错位的情况。例如,将 "2020-10-01" 转换为时间后,月份变成了 11 月。
原因
要了解其中的原因,我们需要查看 new date 源码。new date 函数接受一个字符串参数,并将其解析为日期对象。在这个过程中,月份被解析为 0 到 11 的数字,其中 0 代表 1 月,11 代表 12 月。
因此,当将 "2020-10-01" 传递给 new date 时,解析函数将月份解析为 10,这代表的是 11 月,而不是 10 月。
解决方案
要解决这个问题,可以在将字符串转换为时间之前对月份进行调整。例如:
const dateStr = "2020-10-01" const month = parseInt(dateStr.substring(5, 7)) - 1; const date = new Date(dateStr.substring(0, 4), month, dateStr.substring(8, 10));
这样,转换后的 date 对象的月份将正确显示为 10 月。
以上就是JS 字符串转时间为何会出现月份错位?的详细内容,更多请关注其它相关文章!