跳到正文
ZH
English soon 简体中文 日本語 soon

学习 · 指南

如何读懂 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 值。能一眼读懂它们,并在需要时精确换算,能省下实打实的排查时间。