toolgarden.xyz
EN
Unix 时间戳秒与毫秒JavaScript Date

Unix Timestamp 是什么?秒和毫秒时间戳有什么区别?

理解 Epoch、秒、毫秒、微秒、时区显示、位数判断、精度与转换错误。

ToolGarden 推荐的工具优先在浏览器本地运行,文件和文本不必上传到服务器,适合更注重安全隐私的日常处理。

发布于 2026年9月20日约 9 分钟阅读作者 ToolGarden

Unix Timestamp 表示从 1970-01-01 00:00:00 UTC 起经过的时间。数字通常不含时区,单位决定转换后是否为预期日期。

经典错误是相差 1000 倍:一个系统发秒,另一个按毫秒读,结果落在 1970 或遥远未来。位数有助诊断,明确单位更可靠。

Epoch 与时区

时间戳 0 表示 UTC Epoch,正数在之后,平台支持的负数在之前。

时区在向人展示时介入。上海和纽约会为同一瞬间显示不同钟表时间;重复本地日程需要时区数据库。

秒、毫秒与微秒

传统 Unix 时间用秒,JavaScript Date 用毫秒,日志和 Trace 可能用微秒或纳秒。裸数字无法说明单位。

当前日期通常是 10 位秒、13 位毫秒、16 位微秒;远期日期会破坏该启发式。

单位当前位数转毫秒
10× 1,000
毫秒13不变
微秒16÷ 1,000
纳秒19÷ 1,000,000

JavaScript 转换

new Date(number) 把数字当毫秒,秒值要先乘 1000;Date.getTime 返回毫秒,floor(Date.now()/1000) 返回整数秒。

机器接口应交换带 Z/Offset 的 ISO,或单位命名明确的数值字段;无 Offset 日期会产生本地时区歧义。

const ms = Date.now();
const sec = Math.floor(ms / 1000);
new Date(sec * 1000);
new Date(ms);

自动判断的边界

数值大小适合粘贴当前时间。ToolGarden 把约 1e11 以下当秒、1e14 以下当毫秒、更大当微秒,并允许手动选择。

不要只看字符串长度:负号、小数、前导零和远期日期会干扰。转换前应显示解释出的单位。

精度与闰秒

JavaScript Number 只能精确表示到 2^53−1。实用毫秒值安全,当前纳秒值已不安全;需要亚毫秒精度时使用 BigInt 或字符串。

Date 只保存毫秒,微秒转换会丢失细节;Unix 时间通常也不把闰秒作为普通独立值。

排查清单

先确认单位,再检查时区和解析器。对比原始值、ISO、UTC 与本地显示。字段应命名 createdAtSeconds 或 createdAtMs。

  • 1970:很可能把秒当毫秒。
  • 遥远未来:可能把毫秒再次乘 1000。
  • 相差小时:检查时区。
  • 排序丢失:亚毫秒精度被丢弃。
  • 相差一天:检查仅日期解析。

总结

Unix 时间戳只有单位明确时才简单。系统边界统一单位,JavaScript Date 使用毫秒,高精度另行保留,时区规则用于展示和日程。

常见问题

Q.13 位一定是毫秒吗?

对当前年代是强启发式,不是普遍规则。

Q.时间戳含时区吗?

不含,它标识相对 UTC 的瞬间。

Q.为什么 new Date(秒) 显示 1970?

JavaScript 期待毫秒,需要先乘 1000。