🕐 时间戳完全指南:Unix 时间戳与日期互转详解

2026年5月9日 · 阅读约 8 分钟

调试 API 的时候,看到一长串数字 — 1700000000 — 你是不是也愣了一下?这玩意到底是哪天?这就是 Unix 时间戳,计算机世界里的通用时间语言。搞懂它,遇到时间相关的问题就不会抓瞎了。

什么是 Unix 时间戳?

Unix 时间戳(也叫 Epoch 时间)就是从 1970年1月1日 00:00:00 UTC 到现在的总秒数。全球统一,不受时区影响。

举个例子就明白了:

10位时间戳 vs 13位时间戳

有个坑特别常见:为什么有时候收到的是10位数字,有时候是13位?

转换很简单:毫秒值除以 1000 取整就是秒级。用我们 在线时间戳转换工具 可以一键互转。

各编程语言中的时间戳操作

JavaScript

// 获取当前时间戳(毫秒)
const now = Date.now(); // 1700000000000

// 时间戳转日期
const date = new Date(1700000000000);
console.log(date.toISOString()); // "2023-11-14T22:13:20.000Z"

// 日期转时间戳
const ts = new Date("2023-11-15").getTime(); // 1700006400000

Python

import time
from datetime import datetime

# 获取当前时间戳(秒)
ts = time.time()  # 1700000000.123

# 时间戳转日期
dt = datetime.fromtimestamp(ts)
print(dt.strftime("%Y-%m-%d %H:%M:%S"))

# 日期转时间戳
dt = datetime(2023, 11, 15)
ts = dt.timestamp()

PHP

// 获取当前时间戳
$ts = time(); // 1700000000

// 时间戳转日期
echo date("Y-m-d H:i:s", 1700000000);

// 日期转时间戳
echo strtotime("2023-11-15 10:00:00");

时间戳的常见应用

2038年问题

32位有符号整数的最大值是 2147483647,对应 2038年1月19日 03:14:07 UTC。过了这个时间,32位时间戳会溢出变成负数。这就是 2038年问题,跟当年的 Y2K Bug 一个性质。好消息是现在大多数系统已经用 64 位整数了,2038年不会真的世界末日。

时区处理建议

在线工具推荐

需要快速转换时间戳的时候,直接用我们的 时间戳转换工具,秒级毫秒级互转,同时显示 UTC 和北京时间。

常见问题

Q: 为什么我收到的时间戳是 13 位而别人的是 10 位?

精度不同。13 位是毫秒精度(JavaScript/Java),10 位是秒精度(Unix/PHP/Python)。用之前先确认一下精度,不然转换出来的日期完全不对。

Q: 时间戳是唯一的吗?

同一系统内时间戳随时间递增。但同一秒内可能产生相同的时间戳。要全局唯一,得用 UUID 或自增 ID。

Q: 怎么验证时间戳对不对?

用我们的时间戳转换工具,输入后自动帮你转成易读的日期格式,一目了然。