Unix 时间戳换算指南:秒与毫秒、UTC 与本地时间如何对应
开发联调和日志排障里最常见的时间戳问题,这里给你一套快速排查思路。
·
秒和毫秒别混淆
后端日志常见毫秒时间戳,前端接口有时用秒。混用会导致时间相差 1000 倍,是最常见的联调问题之一。
快速判断方法是看位数:当前常见秒级时间戳大多是 10 位,毫秒级时间戳大多是 13 位。把 13 位毫秒时间戳直接当秒解析,通常会得到非常离谱的未来日期。
JavaScript 的 Date.now() 返回毫秒,很多后端接口和数据库字段可能使用秒。接口文档里最好明确字段单位,例如 created_at_ms 或 expire_at_seconds,避免靠猜测处理。
UTC 与本地时间
同一时间戳在不同地区显示不同本地时间,但 UTC 是统一基准。排查跨区系统问题时,建议先用 UTC 对齐再回看本地显示。
开发中的实用技巧
遇到时间异常时,先确认输入是秒还是毫秒,再确认客户端时区设置,最后核对 ISO 8601 输出,通常能快速定位问题。
前端排查可以用 new Date(ms).toISOString() 先看 UTC 结果;Python 排查可以用 datetime.fromtimestamp(ts, timezone.utc);Windows 环境也可以用 PowerShell 的 DateTimeOffset 方法辅助确认。
日志系统建议统一存储 UTC 或带时区的 ISO 8601 字符串,展示层再按用户地区转换。这样跨时区排障时,不同团队看到的是同一个绝对时间点。
常见排查清单
第一,确认时间戳单位是秒、毫秒、微秒还是纳秒;第二,确认输入是否为字符串,避免超大数字精度丢失;第三,确认展示时区是 UTC、本地时区还是指定业务时区。
如果只是临时核对 10 位或 13 位时间戳,可以使用鸽鸽工具网的 Unix 时间戳换算工具同时查看本地时间、UTC 和 ISO 8601,减少手动换算错误。