实时精度 / 03

当前毫秒时间戳

复制当前 13 位 Unix 毫秒数,并与秒、微秒和纳秒单位进行比较。

当前数值

来自设备时钟
Unix 秒—
毫秒
—
微秒
—
纳秒
—

由设备的毫秒级时钟推算

为什么当前毫秒通常是 13 位?

当前日期距离 Unix 纪元约有 1.7 万亿毫秒,因此现代正数通常有 13 位。位数会随日期变化:接近 1970 年的值更短,负数带符号,未来数值会继续增长,所以不能把“13 位”当作唯一验证条件。

JavaScript 与精度

Date.now() 返回来自设备时钟的整数毫秒。把该值乘以 1,000 或 1,000,000,可以分别表达微秒或纳秒单位,但不会产生新的计时精度。需要真实亚毫秒测量的系统应使用合适的高精度时钟,并明确它与 Unix 纪元之间的关系。

存储与接口注意事项

在数据库或 API 中,应同时记录字段单位。秒值写入毫秒字段会落在 1970 年附近,毫秒值写入秒字段则可能溢出或得到遥远未来日期。JavaScript 普通 Number 也有安全整数上限;处理 16 位或 19 位值时,应避免在换算前发生舍入。

具体怎么使用

当接口或数据库字段注明使用毫秒时,复制毫秒行。秒行把同一个设备读数除以 1,000;微秒和纳秒行只是换算单位,并不是独立的高精度测量。

输入与输出示例

输入或设置预期结果
1700000000 · s1700000000000 · ms
1700000000000 · ms1700000000000000 · µs
1700000000000 · ms1700000000000000000 · ns

使用结果前的检查

设备时钟不准,当前数值也会不准,本页不会通过外部授时服务校准设备。已有存储数值请到时间戳转日期并选择毫秒。程序运行耗时应使用单调时钟,因为系统校时可能改变日历时间。

常见问题

当前毫秒时间戳为什么通常是 13 位?

当代日期距离 1970 年纪元约有 1.7 万亿毫秒,因此正数通常为 13 位;较早或遥远未来的日期可能不是 13 位。

Date.now() 返回的是什么?

JavaScript Date.now() 返回设备时钟对应的 Unix 毫秒整数。

把毫秒乘一百万就是精确纳秒吗?

不是。这样只能表示纳秒单位,新增的末尾零并不是设备实际测得的亚毫秒精度。

工具 / 01—06

更多时间戳工具

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