同一套接口里,列表返回秒级时间戳,详情返回毫秒级,前端格式化后日期一天之差。日志里能对上时间点,这种反而好排。
不同模块由不同人实现,取值函数不一样,文档里也没有约定单位。这一点先确认清楚,后面就不用反复试。
ts = raw * 1000 if raw < 10**11 else raw # 字段命名 data['created_at_ms'] = ts
这次卡住的地方就在「接口时间戳单位」这一环,单独把它拎出来验证,别和其他改动混在同一次发布里。先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。
别只看报错的最后一行,往上看几行,真正的起因通常在上面。同类问题如果隔一段时间又出现,多半是某个定时任务或重启流程把改动冲掉了。
把这次用到的命令存进笔记,比记住结论有用,换个环境还能照着走。
处理上按这个顺序:接口层统一转成毫秒并写进文档;前端做兼容判断;返回字段名带上单位后缀。
结果对不对很好判断,所有接口返回的字段单位一致,前端日期展示不再偏移。