指南 / 精度

Unix 秒与毫秒的区别

比较 10 位和 13 位时间戳,理解单位识别、精度、存储范围和常见转换错误。

相差一千倍

秒统计纪元后经过的整秒,毫秒统计千分之一秒,所以同一时刻的毫秒值是秒值的 1,000 倍。例如,1700000000 s 和 1700000000000 ms 都对应 2023-11-14T22:13:20Z。

为什么位数只是提示?

当代正数通常是 10 位秒或 13 位毫秒,但靠近纪元的值更短,负数带符号,未来值会增长。可靠程序应接受明确单位,或至少向用户显示自动识别结果。

精度与安全整数

JavaScript Number 只能在 Number.MAX_SAFE_INTEGER 以内精确表示整数。本站换算 epoch 单位时使用 BigInt,避免 16 位或 19 位输入在计算毫秒日期之前就被舍入。最终日期显示仍受浏览器毫秒精度和日期范围限制。

排查一千倍错误

如果日期落在 1970 年附近,常见原因是把秒当成毫秒;如果结果遥远到超出范围,则可能把毫秒当成秒。先核对字段文档,再手动选择单位,比只看位数更可靠。

四种单位表示同一时刻

单位数值相对于秒的倍数
秒17000000001
毫秒17000000000001,000
微秒17000000000000001,000,000
纳秒17000000000000000001,000,000,000

这四个数值都对应 2023-11-14T22:13:20Z。乘以 1,000 是更换单位,不是改变时刻,也不会增加真实测量精度。可在转换工具中逐一输入并手动选择对应单位。

为什么结果跑到 1970 年或很远的未来?

现代事件被显示成 1970 年 1 月,常见原因是把秒按毫秒解释;出现几万年后的日期,则可能把毫秒当成秒。应先核对源系统字段文档,而不是先修改数值。10 位、13 位只适合辅助识别当代常见数据,不能作为所有日期的通用规则。

例如 1000 秒是 1970-01-01 00:16:40 UTC,1000 毫秒却是当天 00:00:01,两者都合法。处理来源单位统一的文件时,可以在批量转换器中固定单位,避免历史数值被误判。

精度损失与负数取整

1700000000123 毫秒比对应的整秒多出 123 毫秒,转为整数秒后这部分会丢失。本工具按所处单位区间的起点向下取整,因此 -1 纳秒属于毫秒 -1,而不是毫秒零。

微秒、纳秒输出保留原始整数精度;ISO 日历日期显示到毫秒,有更细的余数时会提示。数据库审计或精确往返转换时,应保留原始整数,仅保存可读日期无法还原毫秒以下的细节。

标准与运行时参考

工具 / 01—06

更多时间戳工具

每个工具都从明确的输入出发,给出明确的结果。