前几天写了一个简单的html,需要字符串转日期,想的不用第三方了,自己写了个,如下:
function parseDateStr(dateStr) {
let date = new Date();
date.setFullYear(parseInt(dateStr.substr(0, 4)));
let month = parseInt(dateStr.substr(4, 2)) - 1;
date.setMonth(month);
date.setDate(parseInt(dateStr.substr(6, 2)));
date.setHours(parseInt(dateStr.substr(8, 2)));
date.setMinutes(parseInt(dateStr.substr(10, 2)));
date.setSeconds(parseInt(dateStr.substr(12, 2)));
date.setMilliseconds(0);
return date;
}
本来 功能写好了,今天准备交上去,一侧试,发现有问题,于是开始排查,
发现这样的时间字符串有问题,20220601000000,每次转日期总是转成7月份,也就是2022年7月1日,真是活见鬼,明明月份减一了,于是测试20220531000000,发现没有问题。
郁闷了很久,才发现今天是5月31日,当再代码中 new Date()的时候,日期是31,当我先给年赋值,再给月份赋值6月份的时候,当前的date日期还是31,而6月份没有31日,于是date会判定跨月了,所以才会变成7月份,所以应该先给日赋值,再给月赋值。修改以后代码如下:
---------------------------------------------------------------------------------------------------------------------------------
本以为问题解决了,现在6月1号,转5月31日的字符串,会自动跳到5月初,最好办法是吧new Date()初始化下,如下:
至此,问题解决,假如帮到了你,请点个赞吧!