Unix 时间戳是什么
它就是一个数字:从 1970 年 1 月 1 日 00:00:00 UTC 开始算起,到现在过了多少秒。 用单个数字记录时间的好处是——没有格式歧义、没有时区歧义、比较大小和做减法都很直接, 所以数据库、日志、API 里几乎都用它存时间。
秒还是毫秒
这是最容易踩的坑。同一个时刻,秒级是 1760947200,毫秒级是
1760947200000,差了 1000 倍。传错了,时间会跑到 1970 年或者几万年以后。
经验判断:10 位数是秒,13 位数是毫秒。
时区到底怎么算
时间戳本身不带时区,它只是一个时间点。你在北京看到 2026-10-18 16:52,
同一个时间戳在伦敦显示的是 08:52。所以排查「时间对不上」的问题时,
先确认两边显示的是哪个时区,再怀疑数据本身。
常见问题
为什么有些时间戳是 10 位,有些是 13 位?
10 位是秒级(Unix 时间戳的传统单位,JavaScript 之外的语言多用这个),13 位是毫秒级(Java、JavaScript 的 Date.now() 默认返回毫秒)。这个工具会自动按位数判断,也可以手动切换。
时间戳会受时区影响吗?
不会。Unix 时间戳表示的是「从 1970-01-01 00:00:00 UTC 起经过的秒数」,本身不带时区。受影响的是把它显示成日期的时候——同一个时间戳在 UTC+8 是 16:00,在 UTC 是 08:00。所以下面同时给了本地时间和 UTC 两种显示。
2038 年问题是什么?
如果时间戳用 32 位有符号整数存储,最大值是 2147483647,对应 2038-01-19 03:14:07 UTC。超过这个时刻,32 位系统会溢出成负数,时间跳回 1901 年。现代系统大多已经改用 64 位,但老设备和嵌入式程序里仍有这个隐患。
这个换算准吗?
换算完全由浏览器内置的日期函数完成,不涉及任何网络请求或第三方算法。只要你的设备系统时间是准的,「现在」那个数字就是准的。