学习 · 指南
如何读懂 Unix 时间戳
秒还是毫秒、时区,以及让 epoch 值一眼可读的心算。
时间戳到底是什么
Unix 时间是从 1970-01-01 00:00:00 UTC 起经过的秒数,也就是所谓的「纪元」。它与时区无关:同一个时刻在地球上任何地方都是同一个时间戳。只有在显示的时候,时区才起作用。
秒还是毫秒?
最常见的混淆是单位。
- 10 位(例如
1725931234)—— 秒。这是经典的 Unix 时间戳。 - 13 位(例如
1725931234000)—— 毫秒。JavaScript 的Date.now()和很多 API 返回这种。
经验法则:数字在 17 亿左右就是秒,在 1.7 万亿左右就是毫秒。乘以或除以 1000 就能换算。
用脑子换算
要做粗略估算,就记住当前 epoch 的前两位,以及一年大约是 3150 万秒。凡是需要精确结果,或者日期在过去或未来的,用转换器而不是心算;差 1000 是那种经典 bug,能让过期检查错 50 年。
时区与显示
把时间戳转成日期时,时刻是固定的,但钟面读数取决于你的时区。ToolsKit 的时间戳转换器总是按你浏览器的本地时区渲染,同时显示 UTC 值,方便跨团队比较。做过期逻辑时,永远比较时间戳(或 UTC),不要用本地钟面时间。
反向换算
要把日期变成时间戳,计算 (date - epoch)。内置转换器接受完整 ISO 日期(2026-09-09T12:00:00),并同时返回秒和毫秒。JavaScript 用毫秒,多数 API 和数据库用秒。
你会在哪里遇到它们
JWT 里的 exp 和 iat、OAuth 令牌过期时间、日志时间戳、数据库 created_at 默认值、缓存 TTL 和 cron 任务记录,用的都是 epoch 值。能一眼读懂它们,并在需要时精确换算,能省下实打实的排查时间。