正在加载,请稍候…

Unix 时间戳指南:定义、转换方法及重要性

理解 Unix 时间戳,掌握时间戳与人类可读日期之间的转换,并了解时区陷阱。

Unix 时间戳指南:定义、转换方法及重要性

什么是 Unix 时间戳?

Unix 时间戳(也称为 POSIX 时间或 epoch 时间)是指自 1970 年 1 月 1 日 00:00:00 UTC(Unix 纪元)以来经过的秒数。它是一种简单、通用且与时区无关的表示特定时间点的方式。

当前时间(示例):  2025-06-15 14:30:00 UTC
Unix 时间戳:          1750000200

Unix 时间戳是一个整数——没有时区、没有区域设置、没有日历系统。在任意时刻,它在世界任何地方都是相同的数字。

Unix 时间戳指南:定义、转换方法及重要性 插图

为什么使用 Unix 时间?

Unix 时间戳具有多项优势。它们与时区无关:时间戳不会因您所在位置而改变,转换为本地时间纯粹是显示问题。它们支持简单的算术运算:比较时间、计算持续时间和排序记录都只是整数操作。它们具有通用支持:每种编程语言、数据库和操作系统都理解 Unix 时间戳。而且它们存储紧凑:32 位整数(或 2038 年后的 64 位)可以高效地存储任何日期/时间。

2038 年问题

32 位有符号整数可以存储最大值为 2,147,483,647,对应 2038 年 1 月 19 日 03:14:07 UTC。在此之后,32 位时间戳会溢出为负值,导致未迁移到 64 位的系统出现错误日期。现代 64 位时间戳将范围扩展到大约 2920 亿年——远远超出任何实际关注范围。

Unix 时间戳指南:定义、转换方法及重要性 插图

Unix 时间 vs. 人类可读时间

格式 示例 时区
Unix 时间戳 1750000200 始终为 UTC
ISO 8601 2025-06-15T14:30:00Z 指定 UTC
RFC 2822 Mon, 15 Jun 2025 14:30:00 +0000 指定
本地时间 Jun 15, 2025 10:30 AM EDT 本地

在代码中处理 Unix 时间戳

// JavaScript
const now = Date.now();                    // 自纪元以来的毫秒数
const nowSeconds = Math.floor(Date.now() / 1000); // 秒数

// 将时间戳转换为 Date
const date = new Date(1750000200 * 1000); // 乘以 1000(毫秒)
console.log(date.toISOString());           // "2025-06-15T14:30:00.000Z"

// 将 Date 转换为时间戳
const timestamp = Math.floor(new Date('2025-06-15T14:30:00Z').getTime() / 1000);
# Python
import time
from datetime import datetime, timezone

now = int(time.time())  # 当前时间戳

# 时间戳转 datetime
dt = datetime.fromtimestamp(1750000200, tz=timezone.utc)

# datetime 转时间戳
timestamp = int(datetime(2025, 6, 15, 14, 30, tzinfo=timezone.utc).timestamp())
-- SQL (PostgreSQL)
SELECT EXTRACT(EPOCH FROM NOW())::INTEGER;     -- 当前时间戳
SELECT TO_TIMESTAMP(1750000200);               -- 时间戳转 datetime

Unix 时间戳指南:定义、转换方法及重要性 插图

日志和 API 中的 Unix 时间戳

许多系统使用 Unix 时间戳进行事件记录和 API 响应:

  • JWT exp 声明:{ "exp": 1750000200 }
  • AWS API 响应:{ "LastModified": 1750000200 }
  • 数据库列:created_at INTEGER DEFAULT (unixepoch())

毫秒 vs. 秒

不同系统使用不同的分辨率。JavaScript 的 Date.now() 返回毫秒,而 Python 的 time.time() 返回秒。一个常见错误是在需要秒的地方使用了毫秒,导致日期变为 1970 年或遥远的未来。

如何使用此工具

输入一个 Unix 时间戳(秒或毫秒)以查看对应的 UTC 和本地日期/时间,或输入日期和时间以获取 Unix 时间戳。点击“现在”可立即获取当前时间戳。

-> 尝试 Unix 时间戳转换器