Unix 时间戳使用说明
Unix 时间戳(Unix Timestamp)是指从 1970 年 1 月 1 日 00:00:00 UTC 起,到某一时刻经过的秒数,不包含闰秒。它是计算机系统里最通用的时间表示方式,因为一个整数就能精确定位到某一瞬间,不受时区和日期格式的影响。
为什么会有秒和毫秒两种
早期系统(Unix、PHP、Python 的 time()、MySQL 的 UNIX_TIMESTAMP())用秒为单位,所以是 10 位数字。而 JavaScript 的 Date.now()、Java 的 System.currentTimeMillis() 以及大多数移动端和前端框架用毫秒,所以是 13 位数字。
两者混用是开发中最常见的 bug 来源:把 13 位毫秒值当秒传给后端,日期会跑到几万年以后;把 10 位秒值当毫秒传给前端,日期会回到 1970 年。本工具会根据位数自动识别,同时给出两种单位的结果,避免你踩这个坑。
时间戳与时区的关系
这里有个关键概念:时间戳本身没有时区。它就是一个绝对的时间点,全世界任何地方拿到同一个时间戳,指向的都是同一个瞬间。时区只在"把时间戳转换成人类可读的日期字符串"这一步才参与运算。
所以同一个时间戳 1750000000,在东八区显示为某个下午的时间,在 UTC 显示为当天更早的时间,在纽约显示为前一天——但它们在时间轴上是同一个点。本工具同时给出 UTC、北京时间(UTC+8)和你的本地时间三个视角,方便跨时区排查问题。
常见应用场景
- 接口调试:后端返回的
createdAt: 1750000000到底是什么时候,一眼看清 - 日志排查:日志里的时间戳转成可读时间,定位故障时间点
- 数据库查询:构造
WHERE created_at > 1750000000这类条件 - 缓存与签名:计算 token 过期时间、校验请求时间戳是否在有效窗口内
2038 年问题
32 位有符号整数最大能表示到 2147483647,对应 UTC 时间 2038 年 1 月 19 日 03:14:07。超过这个时刻,使用 32 位存储秒级时间戳的旧系统会溢出。现代系统普遍使用 64 位整数,可以表示到约 2920 亿年后,不存在这个问题。上面速查里的 2000000000 就是用来观察这一临界区间的。
常见问题
输入 10 位和 13 位都可以吗?
都可以。工具按位数自动判断:10 位以内按秒解释,11 位到 13 位按毫秒解释,并且会同时输出两种单位的对照值。
为什么转换出来的时间和我想的差 8 小时?
说明你在拿 UTC 时间和北京时间做对比。时间戳是绝对时间点,UTC 表示的是零时区的时间。北京时间是 UTC+8,所以同一时间戳下北京时间比 UTC 早 8 小时。工具会同时展示两个值,对照看就不会混。
日期转时间戳时,输入的日期按哪个时区解释?
按你的本地时区解释,这也是大多数开发场景的预期行为。如果你的输入是 UTC 时间,需要在数值上自行扣除时差,或者把结果加上 8 小时(以北京时间为例)。
支持哪些日期格式?
2026-10-15 14:30:00、2026/10/15 14:30、2026-10-15T14:30:00Z 以及只写日期 2026-10-15(默认当天 00:00:00)都可以识别。