相差一千倍
秒统计纪元后经过的整秒,毫秒统计千分之一秒,所以同一时刻的毫秒值是秒值的 1,000 倍。例如,1700000000 s 和 1700000000000 ms 都对应 2023-11-14T22:13:20Z。
为什么位数只是提示?
当代正数通常是 10 位秒或 13 位毫秒,但靠近纪元的值更短,负数带符号,未来值会增长。可靠程序应接受明确单位,或至少向用户显示自动识别结果。
精度与安全整数
JavaScript Number 只能在 Number.MAX_SAFE_INTEGER 以内精确表示整数。本站换算 epoch 单位时使用 BigInt,避免 16 位或 19 位输入在计算毫秒日期之前就被舍入。最终日期显示仍受浏览器毫秒精度和日期范围限制。
排查一千倍错误
如果日期落在 1970 年附近,常见原因是把秒当成毫秒;如果结果遥远到超出范围,则可能把毫秒当成秒。先核对字段文档,再手动选择单位,比只看位数更可靠。
四种单位表示同一时刻
| 单位 | 数值 | 相对于秒的倍数 |
|---|---|---|
| 秒 | 1700000000 | 1 |
| 毫秒 | 1700000000000 | 1,000 |
| 微秒 | 1700000000000000 | 1,000,000 |
| 纳秒 | 1700000000000000000 | 1,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 日历日期显示到毫秒,有更细的余数时会提示。数据库审计或精确往返转换时,应保留原始整数,仅保存可读日期无法还原毫秒以下的细节。