年月日转时间戳引发的bug

0 阅读1分钟

起因:

后端回显接口日期字段(shipmentTime)返回的是年月日(yyyy-mm-dd)格式,但是要求提交的时候前端传时间戳的格式,于是前端通过new Date(shipmentTime).getTime()处理后传给后端。结果后端同事反馈日期没有修改过怎么前端传过去的时间戳和后端的不一致。

排查:

我猜想是不是因为返的日期字段是没有带时分秒导致转时间戳的时候有问题,于是我在浏览器控制台敲出如下代码验证我的猜想:

05eaeba8726b48fa8744a844602df1bb.png

ScreenShot_2026-01-08_100931_260.png

结论:

从图中可以看出如果日期是不带时分秒的然后用new Date('2026-01-07').getTime()去转时间戳的时候会默认成new Date('2026-01-07 08:00:00').getTime()去转,从而导致误差,正确的做法是强制给日期后面加上‘00:00:00’再去转。