JS 字符串转时间为何会出现月份错位?

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 字符串转时间为何会出现月份错位?的详细内容,更多请关注其它相关文章!