什么是 Unix 时间戳?
Unix 时间戳(Unix Timestamp)是一个整数,表示从 1970 年 1 月 1 日 00:00:00 UTC(称为「Unix 纪元」)到某一时刻经过的秒数。例如:
1716076800 → 2024-05-19 00:00:00 UTC
0 → 1970-01-01 00:00:00 UTC(纪元起点)
-86400 → 1969-12-31 00:00:00 UTC(纪元之前)
时间戳也可以是毫秒(ms)精度:JavaScript 的 Date.now() 返回的是毫秒时间戳,比秒时间戳多 3 位。
为什么开发者使用时间戳?
- 时区无关:时间戳是绝对时间,不受时区影响。存储时间戳后,在不同时区显示时再转换为本地时间,避免时区混乱
- 易于计算:两个时间相差的秒数 = 时间戳之差,时间加减运算非常简单
- 数据库友好:整数占用空间小,索引效率高,排序方便
- 跨语言通用:所有主流编程语言都原生支持时间戳操作
如何互转时间戳和日期
使用 tool.tl 的时间戳转换器:
- 访问 tool.tl/timestamp-converter
- 输入时间戳(秒或毫秒)→ 即时显示对应的日期时间(支持多时区)
- 或输入日期时间 → 即时显示对应的时间戳
- 工具自动识别秒/毫秒精度
代码中操作时间戳
# Python
import time
from datetime import datetime, timezone
# 获取当前时间戳(秒)
now_ts = int(time.time()) # 例:1716076800
# 时间戳转日期
dt = datetime.fromtimestamp(1716076800, tz=timezone.utc)
print(dt) # 2024-05-19 00:00:00+00:00
# 日期转时间戳
dt = datetime(2024, 5, 19, tzinfo=timezone.utc)
ts = int(dt.timestamp()) # 1716076800
# JavaScript
Date.now() // 毫秒时间戳
new Date(1716076800000).toISOString() // 2024-05-19T00:00:00.000Z
new Date('2024-05-19').getTime() // 毫秒时间戳
常见时间单位换算
| 时间单位 | 对应秒数 | 时间戳差值 |
| 1 分钟 | 60 秒 | 60 |
| 1 小时 | 3,600 秒 | 3600 |
| 1 天 | 86,400 秒 | 86400 |
| 1 周 | 604,800 秒 | 604800 |
| 30 天 | 2,592,000 秒 | 2592000 |
| 1 年(365天) | 31,536,000 秒 | 31536000 |
常见问题
2038 年问题是什么?
32 位有符号整数能表示的最大时间戳是 2,147,483,647,对应 2038 年 1 月 19 日。到那时,使用 32 位整数存储时间戳的旧系统将发生溢出。现代系统已普遍使用 64 位整数,这个问题已基本解决。
毫秒时间戳和秒时间戳怎么区分?
简单判断:如果时间戳超过 13 位数字(如 1716076800000),通常是毫秒;10 位数字(如 1716076800)通常是秒。转换器会自动识别。
转换器是免费的吗?
是的,tool.tl 的时间戳转换器完全免费,支持多时区显示,无需注册。