~/tutorials/timestamp
什么是时间戳?1720000000 怎么换算成人类可读时间
日志里刷出 1720000000、接口报错带 timestamp=1720000000000、分不清这是秒还是毫秒——时间戳(timestamp)看着只是一串数字,其实背后有个 30 秒就能讲清的定义。
时间戳是什么:30 秒讲清
Unix 时间戳从 1970-01-01 00:00:00 UTC(Unix 纪元)开始,之后每过一秒记 1。所以上面那个 1720000000,就是「距今约 54 年、数到这一秒」的计数,落在 2024 年年中。常见实例对照:
| 时间戳(秒) | UTC 时间 | 北京时间(UTC+8) |
|---|---|---|
| 0 | 1970-01-01 00:00:00 | 1970-01-01 08:00:00 |
| 1720000000 | 2024-07-03 09:46:40 | 2024-07-03 17:46:40 |
| 2000000000 | 2033-05-18 03:33:20 | 2033-05-18 11:33:20 |
同一时刻的 13 位写法,就是毫秒时间戳,直接乘 1000 得到。
怎么快速换算
三步
① 把 1720000000 这类数字粘进工具,10 位自动当秒、13 位自动当毫秒,不用手动选。② 双向都能换:拿到可读时间反推时间戳,拿到时间戳反推日期,来回校对。③ 看时区列:工具同时给出 UTC 和北京时间(UTC+8),确认自己看的是哪一列。
三个最常踩的坑
- 秒 vs 毫秒差 1000 倍:看位数最稳——10 位是秒,13 位是毫秒。把 1720000000000 当秒用,换算出来是 5 万多年,一眼就知道错了。
- 时区差 8 小时:时间戳本身不带时区,只表示「距纪元起多少秒」。中国是 UTC+8,同一时刻北京时间比 UTC 快 8 小时,对照两列看,别把 UTC 列直接当本地时间。
- 部分语言 / 框架要 ISO 8601 字符串:Java 的 Instant、TypeScript 的 Date 入库常要
2024-07-03T09:46:40Z这种格式,工具直接给出可复制的字符串,不用自己拼。
常见问题
时间戳 0 是什么时间?
0 就是 Unix 纪元起点:1970-01-01 00:00:00 UTC,对应北京时间 1970-01-01 08:00:00。
怎么把时间戳转成数据库要的格式?
把时间戳粘进转换工具,工具直接给出 ISO 8601 字符串(如 2024-07-03T09:46:40Z)和北京时间,复制即可入库,不用自己套公式。
时间戳可以是负数吗?
可以。负数表示 1970-01-01 00:00:00 UTC 之前的时刻,例如 -1 是 1969-12-31 23:59:59 UTC。
毫秒时间戳和秒时间戳哪个准?
两者表达同一时刻,精度不同:13 位毫秒时间戳能精确到 1 毫秒,10 位秒时间戳精确到 1 秒。同一系统内保持单位统一,避免混用。