Skip to content

时间戳转换 ​

日志里一串 1788609600,你想知道是什么时候。或者要给接口传一个「明天零点」的时间戳。

「时间戳转换」工具页初始界面:时间值 / 输入 / 参数配置 / 展示时区 / 本地时间 / UTC / 北京时间 / 实时预览;页头标签「浏览器本地执行 · 免费」

打开「时间戳转换」看到的初始界面。在浏览器本地完成、数据不离开浏览器,免费。

先数位数 ​

拿到一串数字,第一件事是数位数——这决定了单位:

位数单位谁在用
10 位秒Unix 标准,多数后端、数据库
13 位毫秒JavaScript 的 Date.now()、Java 的 currentTimeMillis()
16 位微秒部分数据库、链路追踪
19 位纳秒Go 的 time.Now().UnixNano()

弄错单位的症状很好认:日期跑到 1970 年(把秒当毫秒),或者跑到公元五万年(把毫秒当秒)。

时间戳本身不含时区 ​

这是理解所有时间戳问题的前提。

Unix 时间戳是「从 1970-01-01 00:00:00 UTC 起的秒数」,全世界同一时刻的时间戳完全相同。没有「北京时间的时间戳」这种东西。

时区只在两个地方起作用:把时间戳显示成人能读的日期时,以及把人写的日期解析成时间戳时。所以工具会同时显示 UTC 和本地时间——绝大多数时间戳纠纷,看一眼这两个数就能定位在哪一端出的问题。

差 8 小时的排查顺序 ​

如果偏差恰好是 8 小时的整数倍,几乎必然是时区问题,不用怀疑数据本身。中国全境统一 UTC+8 且没有夏令时,所以偏差总是整 8 小时,不会出现 7 或 9 小时这种夏令时特有的情况。

排查:先确认这个时间戳对应的 UTC 时间 → 再确认它应该按哪个时区显示 → 最后看代码里格式化函数用的是哪个时区。

完整说明:时间戳换算出来差了 8 小时,问题出在哪

显示成 1970 年的另一种原因 ​

如果时间戳是 0 或空值,格式化出来就是 1970-01-01。这通常意味着上游没赋值,而不是时间算错了。

看到一批数据整齐地显示 1970-01-01 08:00:00(注意那个 08:00:00,正是 UTC 0 点按东八区显示的结果),基本可以判定是字段没填。

浏览器本地处理 ​

不上传服务器。

相关工具 ​

最后更新:2026-09-05