⏱ 时间戳转换
在线 Unix 时间戳转换工具:秒/毫秒时间戳与北京时间互转,显示当前时间戳,支持批量转换与常用编程语言取时间戳的写法。
时间戳 → 日期时间
日期时间 → 时间戳
批量转换
每行一个,时间戳会转成北京时间,日期时间会转成秒/毫秒时间戳。
时间戳转换怎么用
页面顶部实时显示当前 Unix 时间戳,秒和毫秒各一行,点击即可复制。在「时间戳 → 日期时间」里粘贴一个时间戳,会自动识别是 10 位(秒)还是 13 位(毫秒),并同时给出北京时间、UTC 时间和你本机时区的时间、ISO 8601 写法以及星期几。反过来,在「日期时间 → 时间戳」里输入或选择一个日期时间(按北京时间解释),立即得到秒和毫秒两种时间戳。要转一批数据,把每行一个的内容贴进「批量转换」即可。
常用编程语言获取时间戳
| 语言 / 环境 | 毫秒时间戳(13 位) | 秒时间戳(10 位) |
|---|---|---|
| JavaScript | Date.now() | Math.floor(Date.now() / 1000) |
| Python | int(time.time() * 1000) | int(time.time()) |
| Java | System.currentTimeMillis() | System.currentTimeMillis() / 1000 |
| Go | time.Now().UnixMilli() | time.Now().Unix() |
| PHP | round(microtime(true) * 1000) | time() |
| MySQL | UNIX_TIMESTAMP(NOW(3)) * 1000 | UNIX_TIMESTAMP() |
| Shell | date +%s%3N | date +%s |
Python 需先 import time;MySQL 里把时间戳转回日期用 FROM_UNIXTIME(1700000000);Shell 的 %3N 在 macOS 自带的 date 里不支持,可改用 gdate 或 python3 -c。
常见问题
时间戳是秒还是毫秒?
Unix 时间戳的标准定义是从 1970 年 1 月 1 日 00:00:00 UTC 起经过的秒数,现在通常是 10 位数字。JavaScript、Java 等语言默认给出的是毫秒,13 位数字。判断办法很简单:数一数位数,10 位是秒,13 位是毫秒。本工具会自动识别,也可以手动把 13 位除以 1000。
时间戳和时区有关系吗?
没有。同一时刻在全球任何地方的时间戳都相同,它本身不含时区信息。时区只在「把时间戳显示成人能读的日期」这一步才起作用:同一个 1700000000,在北京显示为 2023-11-15 06:13:20,在 UTC 则是 2023-11-14 22:13:20。所以做日期转换时一定要明确用的是哪个时区,本工具默认按北京时间(UTC+8)。
2038 年问题是什么?
用 32 位有符号整数存秒级时间戳,最大只能到 2147483647,即 2038 年 1 月 19 日 03:14:07 UTC,之后会溢出变成负数。现代系统普遍用 64 位整数存储,不再有这个问题,但一些老旧的嵌入式设备和数据库字段(如 MySQL 的 TIMESTAMP 类型上限就是 2038 年)仍需注意。
时间戳可以是负数吗?
可以。负数表示 1970 年之前的时刻,例如 -86400 就是 1969 年 12 月 31 日 00:00:00 UTC。大多数语言都支持负时间戳,但个别数据库或旧接口会拒绝。
Excel 里怎么把时间戳转成日期?
Excel 的日期序列号以 1900 年为起点,按天计。秒级时间戳转北京时间的公式是 =(A1+8*3600)/86400+DATE(1970,1,1),然后把单元格格式设为日期时间即可;毫秒时间戳先除以 1000。