免费工具 时间戳转换器:Unix 时间戳与北京时间互转
日志、接口返回、数据库里那串 10 位或 13 位数字,粘进来就能看到对应的北京时间;反过来输入一个日期,马上得到秒级和毫秒级时间戳。位数自动判断,不用先想它是秒还是毫秒。
- 秒、毫秒、微秒、纳秒
- 任意时区,含夏令时
- 本地计算
时间戳、日期互相转换
一行一个值。纯数字按 Unix 时间戳理解;日期按下面选的时区理解,带了时区偏移的按它自己的偏移。粘贴多行就是批量转换。
数字:10 位是秒,13 位是毫秒。日期:2026-11-10 09:30:00 这种写法;末尾加 Z 或 +08:00 可以指定时区。
结果按这个时区显示;没写偏移的日期也按这个时区理解。打开页面时会自动换成你电脑的时区(列表里有的话)。
一般保持自动;位数很短的值(比如 1970 年代初的时间戳)再手动指定。
2023-11-15 06:13:20 (UTC+08:00)后面括号里是当时生效的 UTC 偏移,北京时间固定是 UTC+08:00。
2023-11-14T22:13:20.000Z存储和接口传输用这个格式,不会有时区歧义,末尾 Z 表示 UTC。
1700000000PHP time()、Python int(time.time())、MySQL UNIX_TIMESTAMP() 返回的就是它。
1700000000000JavaScript Date.now()、Java System.currentTimeMillis() 返回的就是它。
每行:原值 → 所选时区的日期(秒级时间戳)。认不出来的行显示 ?。
分享这组输入:数值写在链接的 # 后面,不会发到服务器。
https://tapcub.com/zh/tools/timestamp-converter
版本 v1.0更新于 更新记录
同一个时刻的四种写法
几个结果说的是同一个瞬间,区别只在单位,以及显示时有没有套用时区。
秒级和毫秒级
都是从 1970-01-01 00:00:00 UTC 起算的时长,毫秒级多 3 位。PHP、Python、MySQL、Go 常用秒;JavaScript、Java、小程序里 Date.now() 拿到的是毫秒。前后端一边传秒一边按毫秒解析,是时间戳最常见的 bug。
ISO 8601(UTC)
人能看懂、又自带时区的字符串,末尾 Z 表示 UTC。接口、日志、JSON 里用它,谁来解析都不用猜时区。
所选时区的日期时间
那个时区的人当时在钟表上看到的时间。北京时间全年 UTC+08:00,没有夏令时;美国、欧洲的时区夏天和冬天偏移不同,括号里会如实显示。
批量结果
粘贴多于一行时出现。每行保留原值,可以从日志或 Excel 里复制一整列进来,再把转换后的一列复制回去。
Unix 时间戳本身没有时区。换时区只改变显示出来的日期时间,秒和毫秒不会变。
三步完成转换
边输边算,不用点按钮。
-
1
粘贴值
任意常见位数的时间戳、
2026-11-10 09:30这样的日期,或者一行一个的整列数据。点「填入当前时间」得到此刻的秒级时间戳。 -
2
选时区
默认北京时间(打开页面后会换成你电脑的时区)。没写偏移的日期,也按这个时区理解。
-
3
核对单位再复制
结果落在 1970 年或几万年后,说明单位判断错了,手动选一下。每个结果都有复制按钮。
Unix 时间戳 = 从 1970-01-01 00:00:00 UTC 起经过的秒数
这个起点叫 Unix 纪元(epoch),对应北京时间 1970-01-01 08:00:00。时间戳就是从那以后经过的秒数(或毫秒、微秒、纳秒),更早的时间是负数。转成日期就是在纪元上加这么多秒,再按时区显示。
- 自动判断单位:≤ 11 位按秒,12–14 位按毫秒,15–17 位按微秒,18–20 位按纳秒
- 日期的年月日之间可以用
-、/或.,秒和毫秒可省略,末尾可带Z或±HH:MM - Unix 时间不计闰秒,每天在时间戳里都正好是 86,400 秒
- 时区和夏令时规则来自浏览器内置的 IANA 时区库
时间戳 → UTC 日期
日期 = 1970-01-01T00:00:00Z + 秒数
1700000000 → 2023-11-14T22:13:20Z
秒 ↔ 毫秒
毫秒 = 秒 × 1,000
1700000000 秒 = 1700000000000 毫秒
UTC → 北京时间
北京时间 = UTC + 8 小时
2023-11-14 22:13:20 UTC → 2023-11-15 06:13:20
32 位整数上限
2³¹ − 1 = 2147483647
→ 2038-01-19 03:14:07 UTC,即「2038 年问题」
五个输入,按北京时间看
时区选 Asia/Shanghai,五行一起粘贴。前三行是同一时刻的不同精度;后两行演示双 11 零点怎么换成时间戳,以及输入里带 Z 时结果怎么变。
| 输入 | 识别为 | ISO 8601(UTC) | 北京时间 |
|---|---|---|---|
1700000000 | 秒(10 位) | 2023-11-14T22:13:20.000Z | 2023-11-15 06:13:20 (UTC+08:00) |
1700000000000 | 毫秒(13 位) | 2023-11-14T22:13:20.000Z | 2023-11-15 06:13:20 (UTC+08:00) |
1700000000123456 | 微秒(16 位) | 2023-11-14T22:13:20.123Z | 2023-11-15 06:13:20 (UTC+08:00) |
2026-11-11 00:00:00 | 按所选时区理解的日期 | 2026-11-10T16:00:00.000Z | 2026-11-11 00:00:00 (UTC+08:00) |
2026-11-10T09:30:00Z | 带 Z 的 UTC 日期 | 2026-11-10T09:30:00.000Z | 2026-11-10 17:30:00 (UTC+08:00) |
第四行双 11 零点对应的秒级时间戳是 1794326400,ISO 里显示的是前一天 16:00 UTC。第五行的 Z 表示 UTC,所以 09:30 要加 8 小时,变成北京时间 17:30。
时间戳最容易出错的地方
换算本身是精确的。出问题的地方都是单位和时区「默认」了,而没有写明。
秒和毫秒搞混
毫秒当秒解析会跑到几万年后,秒当毫秒解析会落在 1970 年 1 月。接口两端约定好位数,Java / JS 拿到的 13 位传给 PHP 前先除以 1000。
存日期不带时区
「2026-11-10 09:30」在北京和纽约是两个时刻。数据库里存时间戳或带偏移的 ISO 8601,只在显示时换成北京时间。
以为服务器是北京时间
很多云服务器、Docker 容器默认是 UTC,日志里的时间会比北京时间早 8 小时。格式化时显式指定时区,别依赖系统默认。
把 8 小时写死在代码里
「+ 8 × 3600」只对北京时间成立。用户或服务器在海外、或者遇到有夏令时的地区,就会错。按时区名换算,不要手加固定小时数。
事件自带时间,不用再手动换算
TapCub 采集的每一次浏览和事件都记录了发生时间,报表按你站点的时区切分小时和天,和你的营业日对得上。
Unix 时间戳是什么?
从 1970-01-01 00:00:00 UTC(北京时间 1970-01-01 08:00:00)起经过的秒数。比如 1700000000 就是北京时间 2023-11-15 06:13:20。它只是一个数字,方便存储、排序和比较,在全世界表示同一个时刻。
10 位和 13 位时间戳有什么区别?
10 位是秒,13 位是毫秒,差 1000 倍。PHP、Python、MySQL 默认用秒;JavaScript 的 Date.now()、Java 的 System.currentTimeMillis() 返回毫秒。16 位是微秒,19 位是纳秒。这个工具按位数自动判断,也可以手动指定。
各语言怎么获取当前时间戳?
JavaScript:Math.floor(Date.now() / 1000)(毫秒直接 Date.now());Python:int(time.time());PHP:time();Java:System.currentTimeMillis() / 1000;MySQL:UNIX_TIMESTAMP();Linux 命令行:date +%s。
MySQL 和 Excel 里怎么把时间戳转成日期?
MySQL 用 FROM_UNIXTIME(1700000000),结果按数据库会话的时区显示。Excel 里秒级时间戳在 A1 时,北京时间公式是 =(A1+8*3600)/86400+DATE(1970,1,1),再把单元格格式设成日期时间;13 位的先除以 1000。
为什么转出来的时间差了 8 小时?
基本都是时区问题:值是按 UTC 写的却当北京时间读了,或者反过来。服务器、Docker 容器默认 UTC 很常见。在输入末尾加 Z 或 +08:00 写明时区,或者把时区选成写入时用的那个。
时间戳有时区吗?
没有。时间戳从一个按 UTC 定义的固定时刻起算,同一个时间戳在北京和伦敦是同一个瞬间。只有把它格式化成「几月几号几点」时,才需要时区。
什么是 2038 年问题?
用有符号 32 位整数存秒级时间戳的系统,到 2147483647(2038-01-19 03:14:07 UTC,北京时间 11:14:07)之后会溢出。数据库字段和代码里用 64 位整数或日期类型可以避免。