同一句日期,我电脑过了 CI 没过

账单那次改完,我补了一个测试,断言某条记录的「业务日期」是 8 月 1 日。本地 npm test 过了。合并请求的 CI 红了,断言收到的是 7 月 31 日。

测试里写的是:

1
const at = new Date('2026-08-01 00:05:00')

这不是标准格式。中间是空格,没有时区。Node 在我电脑上按本地时区理解,CI 的容器是 UTC,两种解释差 8 小时,再一切日期就不在同一天。本地没失败,是因为我和用例想的时区碰巧一样。

改成带偏移的字符串:2026-08-01T00:05:00+08:00。需要「这一天」的地方,用明确的时区算,不把 Date 再 toISOString() 之后切前 10 位。那样切出来的是 UTC 的日期。

我把仓库里其他 new Date('YYYY-MM-DD HH:mm:ss') 搜了一遍,还有 4 处,都在测试里,今天一起改了。生产代码里没有这种写法。这次算是运气,红在 CI 上,没有红在客户的报表里。