同一套接口里,列表返回秒级时间戳,详情返回毫秒级,前端格式化后日期一天之差。日志里能对上时间点,这种反而好排。

不同模块由不同人实现,取值函数不一样,文档里也没有约定单位。这一点先确认清楚,后面就不用反复试。

ts = raw * 1000 if raw < 10**11 else raw
# 字段命名
data['created_at_ms'] = ts

这次卡住的地方就在「接口时间戳单位」这一环,单独把它拎出来验证,别和其他改动混在同一次发布里。先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。

别只看报错的最后一行,往上看几行,真正的起因通常在上面。同类问题如果隔一段时间又出现,多半是某个定时任务或重启流程把改动冲掉了。

把这次用到的命令存进笔记,比记住结论有用,换个环境还能照着走。

处理上按这个顺序:接口层统一转成毫秒并写进文档;前端做兼容判断;返回字段名带上单位后缀。

结果对不对很好判断,所有接口返回的字段单位一致,前端日期展示不再偏移。

作者 9823189