时间戳差了 1000 倍或 8 小时,应该怎么排查
区分单位错误和时区错误,用固定例子检查接口、数据库和日志。
TOOL 内容维护 · 更新于 2026-11-06
先确认秒还是毫秒
Unix 时间戳从 UTC 的 1970 年 1 月 1 日零点计时。有的接口使用秒,JavaScript Date 使用毫秒。如果把秒直接传入 Date,通常会得到接近 1970 年的日期;如果把毫秒当秒处理,结果可能远超正常日期范围。
“10 位秒、13 位毫秒”只是当前常见的经验。历史日期和未来日期的长度可能不同,负时间戳也有不同长度。应查看接口约定,并明确选择输入单位。
用固定例子核对时区
时间戳 0 毫秒对应 1970-01-01 00:00:00 UTC,在北京时间显示为 1970-01-01 08:00:00。数值时间戳未变,变化的是显示时区。
可使用 1704067200000 毫秒作为另一个核对样例:它对应 2024-01-01 00:00:00 UTC,也就是北京时间 08:00:00。如果系统显示相差 8 小时,优先检查格式化和反向解析时采用的时区。
反向转换要写明日期的时区
“2024-01-01 08:00:00”本身没有完整说明时刻。它可能是北京、伦敦或浏览器所在地区的墙上时间。本站反向转换要求选择 UTC 或固定 UTC+08:00,避免依赖设备默认设置。
如果业务涉及夏令时,不要把地区时区简单当作固定偏移。应在服务端使用明确的地区时区标识并核对夏令时转换规则。本站固定北京时间输入不承担其他地区的夏令时解析。
保存数据时减少歧义
接口字段可以用 createdAtMs 等命名表明单位,并在文档中提供示例。日志尽量写入带 Z 或时区偏移的 ISO 时间。数据库、API 和展示层分别确认一次单位与时区,通常比在界面上手动加减 8 小时更可靠。
发现内容有误?告诉我们,请附上问题所在段落和可复现的示例。