Menu

Unix 时间戳转换器

在 Unix 时间戳、ISO 8601、UTC 和本地时间之间转换。

作者 Nethanel Bar, Co-founder & CEO

最后更新

准备好真正学会编程了吗?

Coddy 让你在浏览器里编写真实代码来学习:互动课程、即时反馈,卡住时还有 AI 帮忙。

Unix 时间戳转换器是什么?

Unix 时间戳转换器把纪元时间(epoch time,一个代表历史上某一时刻的数字)转换成人能读懂的日期,也能把日期转换回时间戳。开发者到处都会遇到时间戳:数据库字段、日志行、API 响应、分析事件、JWT 的 exp 声明、定时任务触发器,以及缓存过期响应头。

核心思路很简单:计算机把时间存成一个数字(从 1970-01-01 00:00:00 UTC 起经过的秒数或毫秒数),但人需要日历、时区和可读的格式。在两者之间转换,是任何网页或移动应用中最常见的调试任务之一。

最容易搞混的是单位。POSIX 和大多数后端语言用秒。JavaScript、Java 和很多消息队列用毫秒。有些监控系统用微秒或纳秒。10 位数字几乎一定是秒,13 位数字几乎一定是毫秒。

转换时间戳时你会学到

  • Unix 时间戳以 Unix 纪元(1970-01-01 00:00:00 UTC)起经过的秒数或毫秒数来计量时间。
  • UTC 是固定的参照。本地时间取决于用户所在的时区、夏令时规则和设备的时钟设置。
  • ISO 8601(2026-04-25T12:00:00Z)是一种通用的文本格式。末尾的 Z(或 +00:00)表示 UTC;像 +02:00 这样的偏移量表示比 UTC 快 2 小时的本地时间。
  • 时间戳是最适合用来比较的格式。两个 ISO 字符串可能表示同一时刻,但看起来不一样(2026-04-25T12:00:00Z 和 2026-04-25T14:00:00+02:00)。

Unix 时间戳转换步骤

  1. 粘贴数值

    粘贴一个数字(秒或毫秒)或者一个日期字符串。转换器会根据长度和格式自动识别。

  2. 确认单位

    如果自动识别猜错了,就手动切换秒和毫秒:10 位数字是秒,13 位数字是毫秒。

  3. 查看各种结果

    输出会显示 UTC 的 ISO 8601 格式、你的本地时间,以及易读的相对时间描述(3 hours ago、in 2 days)。

  4. 复制你需要的值

    直接复制时间戳、ISO 字符串或本地时间。填写 JWT 的 exp、数据库记录或日志查询时很方便。

时间戳格式速查

在代码中处理日期和时间时最常见的格式。IETF 还把 ISO 8601 规范化为 RFC 3339,用于各种协议。

格式示例常见于
Unix 秒1777118400后端日志、JWT exp、POSIX time()、Redis
Unix 毫秒1777118400000JavaScript Date.now()、Java System.currentTimeMillis()
ISO 8601 UTC2026-04-25T12:00:00ZREST API、JSON、GraphQL、日志文件
带偏移量的 ISO 86012026-04-25T14:00:00+02:00面向用户的日程安排、日历邀请
RFC 2822Sat, 25 Apr 2026 12:00:00 GMT邮件头、HTTP Date 和 Last-Modified
仅日期2026-04-25生日、节假日,不涉及时区

可以试试的时间戳示例

秒与毫秒

秒(10 位)

1777118400

毫秒(13 位)

1777118400000

如果第一个按秒解读、第二个按毫秒解读,这两个值表示的是同一时刻。把两者搞混,是最常见的时间戳 bug。

读懂 API 返回的时间戳

响应
{  "id": 42,  "createdAt": 1777118400,  "expiresAt": 1777204800}

在判断某个值是过去还是将来之前,先把它转换一下。大多数 JSON API 使用 Unix 秒,但一定要查看文档:大量使用 JavaScript 的后端经常输出毫秒。

比较 UTC 和本地时间

UTC

2026-04-25T12:00:00Z

同一时刻,+02:00

2026-04-25T14:00:00+02:00

这两个字符串表示的是同一个瞬间。存储时刻时始终使用 UTC,只在显示时才格式化成本地时间。

时间戳的常见错误

  • 把秒和毫秒混用。1000 倍的差距能让日期偏移几十年:1700000000 按秒解读是 2023 年 11 月,按毫秒解读却是 1970 年 1 月。
  • 存储不带时区的日期字符串。不同系统会有不同的解读:有的默认是 UTC,有的默认是服务器所在的本地时区。
  • 比较格式化后的日期字符串('2026-04-25'),而不是比较时间戳。两个有效的 ISO 字符串可能用不同格式表示同一时刻。
  • 按本地时间安排重复事件时,忘了考虑夏令时切换。始终以 UTC 作为唯一可信的时间来源。
  • 在安全相关的截止时间上(令牌过期、一次性验证码)把设备时钟当作权威。应该使用服务器时钟,并允许少量的时间偏差。

Unix 时间戳常见问题

Unix 时间戳是什么?
Unix 时间戳(也叫纪元时间)是从 1970-01-01 00:00:00 UTC 起经过的秒数(或毫秒数)。它是一个代表特定时刻的数字,与任何时区无关。
为什么有的时间戳是 10 位,有的是 13 位?
10 位的 Unix 时间戳以秒为单位,13 位的以毫秒为单位。JavaScript 的 Date.now() 返回毫秒,大多数后端返回秒。
UTC 是什么意思?

UTC 是协调世界时(Coordinated Universal Time)的缩写。它是全球标准的时间参照,不实行夏令时。大多数数据库、API 和日志都应该用 UTC 存储时间。

为什么 JavaScript 使用毫秒?
JavaScript 的 Date 对象把时间戳存储为自 Unix 纪元起的毫秒数,Date.now() 和 new Date().getTime() 返回的就是这个值。它比秒更精确,但在和其他语言对接时,经常导致相差 1000 倍的 bug。
怎么把 Unix 时间戳转换成日期?
在 JavaScript 中,先乘以 1000(如果是秒),再传给 new Date(...);在 Python 中,用 datetime.fromtimestamp(...)。或者直接粘贴到 Unix 时间戳转换器里,一键得到结果。
Unix 时间戳会溢出吗?
有符号 32 位 Unix 时间戳会在 2038-01-19 溢出,也就是所谓的 2038 年问题。现代语言和数据库把时间戳存储为 64 位整数,安全范围延长到了几千亿年。

了解更多

其他开发者工具

Coddy 编程语言插图

和 Coddy 一起学编程

开始