时间戳转换出来的时间不对,差了 8 小时?
八成是时区问题。中国是 UTC+8,如果一个时间戳按 UTC 渲染,看起来就会比北京时间早 8 小时。用页面上方的时区开关切换一下,对得上就是这个原因。另外,数据库函数(如 MySQL 的 FROM_UNIXTIME)按连接会话的时区渲染,服务器时区没设对时也会差这 8 小时。
Unix 时间戳是一个整数,表示从 1970 年 1 月 1 日 00:00:00 UTC 到某个时刻之间经过的秒数。它不带时区、不带格式,就是一个数 —— 这正是它的用处:全世界的机器对同一时刻都得到同一个数字,存进数据库、塞进接口、跨系统传递都不会因为「北京时间还是东京时间」「年月日还是月日年」而产生歧义。要给人看的时候,再按当地时区渲染成日期。
所以时间戳本身没有时区。「把时间戳转成北京时间」这句话里,转换发生在显示这一步,不在存储那一步。本页上方的时区开关改的也只是显示与解释方式,同一个时间戳在两种时区下是同一个时刻。
10 位是秒,13 位是毫秒,差一个 1000 倍。这是实际用起来最容易出错的地方:Java 的 System.currentTimeMillis()、JavaScript 的 Date.now() 给的是毫秒(13 位),而 Unix date +%s、PHP 的 time()、MySQL 的 UNIX_TIMESTAMP() 给的是秒(10 位)。把毫秒当秒解释,会得到公元 57000 多年;把秒当毫秒解释,会得到 1970 年 1 月上旬。
判断方法很简单,看位数就够了:当前这个年代的秒级时间戳是 10 位,毫秒级是 13 位,短期内不会变。本页会自动按位数判断并把判断结果显示出来,如果你的数据确实不是这个单位,改一下输入即可。偶尔还会遇到 16 位(微秒)和 19 位(纳秒),多见于 Go、Python 的高精度接口和链路追踪系统,本页也能识别。
这个起点叫 Epoch,来自 Unix 系统的早期实现。1970 年并没有什么特殊含义,只是当时定标准的人挑了一个刚过去不久的整年,方便用当时的 32 位整数表示前后几十年。后来 Unix 传播开,这个约定就被 C、Java、JavaScript、各种数据库和几乎所有网络协议继承了下来。
32 位有符号整数能表示的最大秒数对应 2038 年 1 月 19 日,超过之后会溢出成负数 —— 这就是「2038 年问题」。现代系统基本都改用 64 位存储,不再有这个上限,但一些老设备、老固件和早年写死了 32 位字段的协议仍然会中招。另一头,负数时间戳表示 1970 年以前的时刻,是合法的,本页也支持。
命令行用 date +%s 取秒,date +%s%3N 取毫秒(Linux;macOS 的 date 不支持 %N,装 coreutils 用 gdate)。JavaScript 是 Date.now()(毫秒)和 Math.floor(Date.now()/1000)(秒)。Python 是 time.time(),返回浮点秒。Java 是 System.currentTimeMillis()。PHP 是 time()。
数据库这边:MySQL 用 UNIX_TIMESTAMP() 取,用 FROM_UNIXTIME(ts) 转回日期(注意它按连接的时区渲染);PostgreSQL 用 EXTRACT(EPOCH FROM now()) 和 to_timestamp(ts)。这类问题搜的人不少,但要的是一行代码,不是一个网页 —— 抄走即可。
八成是时区问题。中国是 UTC+8,如果一个时间戳按 UTC 渲染,看起来就会比北京时间早 8 小时。用页面上方的时区开关切换一下,对得上就是这个原因。另外,数据库函数(如 MySQL 的 FROM_UNIXTIME)按连接会话的时区渲染,服务器时区没设对时也会差这 8 小时。
看位数:10 位是秒,13 位是毫秒。本页会自动识别并显示判断结果。转出来是 1970 年 1 月上旬,说明把秒当成了毫秒;转出来是几万年后,说明把毫秒当成了秒。
支持。1970 年以前用负数时间戳表示,例如 -86400 是 1969 年 12 月 31 日。直接粘进来即可,不需要额外设置。
它取自你这台设备的系统时钟,和本站服务器无关(本站的工具全部在浏览器本地运行)。设备时间不准,这里显示的就不准。需要精确时间请先校准系统时钟。
不会。JavaScript 用双精度浮点数存储时间,可表示的范围远超 32 位整数,本页转换 2038 年之后的时间戳没有问题。受影响的是那些仍然用 32 位有符号整数存时间的系统。
时间戳是一个数字,ISO 8601 是一种文本格式(如 2026-08-17T12:00:00.000Z)。前者紧凑、便于计算和比较,后者人能直接读、自带时区信息。接口里两种都常见,本页的输出同时给出了这两种形式。
不会。转换用的是浏览器内置的 Date 对象,纯本地计算,没有任何请求。页面加载完之后断开网络,这个工具照常可用。详见隐私政策。
有。JSON 格式化可以查看接口返回的数据结构,Base64 编解码处理编码问题,MD5 与 SHA-256 用于计算摘要与校验文件。