Unix 时间戳转换器
在 Unix 时间戳和可读日期之间转换。实时纪元时钟每秒更新。粘贴任何 10 位(秒)或 13 位(毫秒)时间戳,即可转换到任意时区。
什么是 Unix 时间戳?
Unix 时间戳是自 1970 年 1 月 1 日 00:00:00 UTC 起经过的秒数。它也称为纪元时间或 POSIX 时间。Unix 时间转换不包含闰秒。该值是单个整数,指向某一个时刻。这个整数不依赖时区或区域设置。几乎每种语言、数据库和操作系统都支持纪元时间戳。它们是在系统之间存储和传输时间的通用标准。
秒与毫秒:自动检测格式
大多数 Unix 时间戳以秒为单位——一个目前约为 17 亿的 10 位数字。JavaScript 的 Date.now() 以及许多浏览器和 Web API 则返回毫秒,产生 13 位数字。本转换器会根据输入值的数量级自动检测单位。
- 10 位数字(例如 1700000000)→ 自 Unix 纪元起的秒数
- 13 位数字(例如 1700000000000)→ 自 Unix 纪元起的毫秒数
- 将秒转换为毫秒:乘以 1000
- 将毫秒转换为秒:除以 1000(用 Math.floor 取整数)
纪元时间为什么从 1970 年 1 月 1 日开始?
这个日期是 Unix 最初的开发者在 1970 年代初选定的,作为早于现代计算的一个便利参考点。由于几乎所有有用的时间戳都是正整数,算术和比较都很简单。尽管这一选择有些随意,但它成为了通用标准——每个现代操作系统、编程语言和协议都使用同一个参考点。
Unix 时间转换:如何将纪元转换为可读日期
使用上方的「纪元 → 日期」标签:粘贴任意 Unix 时间戳,选择你的时区,然后点击「转换」。工具会以 ISO 8601(带时区偏移)、UTC 字符串、友好的长格式以及相对时间指示符显示结果。你也可以用「日期 → 纪元」标签进行反向转换。
- ISO 8601 — 标准的机器可读格式:2023-11-15T06:13:20+00:00
- UTC 字符串 — 带星期、便于阅读:Wed, 15 Nov 2023 06:13:20 GMT
- 友好格式 — 区域风格:Wednesday, November 15, 2023 at 6:13:20 AM UTC
- 相对时间 — 按上下文:1 年前
亚秒级精度、单调时间与现代 API
现代代码用到的不仅是秒和毫秒,还会处理微秒和纳秒。代码会区分挂钟时间和单调时间。较新的 JavaScript Temporal API 直接公开纳秒精度的时刻。其底层仍然是 POSIX time_t。在带符号的 32 位 time_t 上,Y2038 溢出限制依然适用。
- 秒(10 位)— 标准的 POSIX time_t 格式
- 毫秒(13 位)— JavaScript Date 和大多数 Web API
- 微秒(16 位)— 高分辨率日志、Chrome/WebKit 时间戳、Postgres 时间戳精度 6
- 纳秒(19 位)— Temporal.Instant.epochNanoseconds (BigInt)、Java Instant、Go time.UnixNano()
- 挂钟时间与单调时间:存储时刻用 Date.now() / time();测量时长用 performance.now() / clock_gettime(CLOCK_MONOTONIC)
- 时区缩写(EST、PST、JST、IST、CST)有歧义——在代码中始终使用 America/New_York 或 Asia/Tokyo 这样的 IANA 名称
- 32 位系统上的 POSIX time_t 会在 2038-01-19 溢出;64 位 time_t 是现代标准
当前 Unix 时间戳,实时更新
本页顶部的时钟每秒更新一次,以秒显示当前纪元、以毫秒显示当前时间,并显示日期。同一时刻以五种方式呈现:10 位纪元秒、13 位毫秒、ISO 8601、UTC 字符串以及友好的本地格式。同一个转换器还兼作日期时间计算器——可用作时区之间、或纪元与人类日期之间的时间日期切换工具。
- 带秒和日期的实时时钟 / 当前纪元时间 / 当前 Unix 时间 —— 在页面顶部实时显示
- 当前毫秒时间(毫秒)—— 与 JavaScript 中 Date.now() 相同的时刻
- 当前时间戳 / 当前 Unix 时间戳 —— 标准的 10 位 Unix 秒值
- 本周 —— 要以纪元求本周开始,请使用参考页的年/月/周时间戳
- 日期时间计算器 —— 对于「日期 + N 天 = 纪元?」,用算出的挂钟值配合「日期 → 纪元」标签
- 时间日期切换器 —— 在转换器中选择新时区,同一时刻的显示随之改变
- Unix 到 unix(系统之间):整数相同,显示随时区而变
- 时间戳 unix time —— 同一个数字的三个名称:时间戳、Unix 时间、纪元时间
纪元 Unix 时间戳转换器 —— 快速参考值
调试或编写测试时经常出现的整数纪元值。每个值都配有对应的 ISO 8601 日期时间,便于一眼核对。所有时刻均为 UTC。
- 0 → 1970-01-01T00:00:00Z(纪元起点)
- 86400 → 1970-01-02T00:00:00Z(纪元后一天)
- 1000000000 → 2001-09-09T01:46:40Z(十位数里程碑)
- 1500000000 → 2017-07-14T02:40:00Z(2017 年中参考)
- 1700000000 → 2023-11-14T22:13:20Z(近期参考)
- 2000000000 → 2033-05-18T03:33:20Z(未来参考)
- 2147483647 → 2038-01-19T03:14:07Z(带符号 32 位整数最大值 —— Y2038 边界)
- 253402300799 → 9999-12-31T23:59:59Z(PostgreSQL 9999 年边界)
在 Unix 时间戳、日期与 UTC 之间转换
这个转换器在一处处理所有方向。粘贴任意挂钟值即可把日期转换为 Unix 时间戳,或粘贴一个纪元整数得到对应的 UTC 日期时间以便解析日志。13 位值会自动识别为毫秒并转换为秒。POSIX 时间只是 Unix 时间的别名——两者操作相同。它支持秒、毫秒、微秒和 ISO 8601 字符串。
- 将时间转换为 Unix 时间戳 —— 粘贴任意挂钟日期,得到秒和毫秒
- 纪元转 UTC —— 粘贴一个纪元整数,查看对应的 UTC 日期时间
- 毫秒转时间戳 —— 13 位值会自动检测为毫秒并转换为秒
- POSIX 时间转换器 —— POSIX 时间只是 Unix 时间的别名;同一工具,同一操作
- 任意方向的 Unix 时间转换 —— 日期 ↔ 纪元、秒 ↔ 毫秒、本地 ↔ UTC
计算机系统、本地时间与 2038 年 1 月 19 日的限制
Unix 时间是全世界计算机系统使用的计时标准——从服务器和数据库到嵌入式设备和操作系统。这些计算机系统在内部将时间存储为 Unix 整数,然后为查看者渲染成本地时间。这一约定有一个著名的限制:在 2038 年 1 月 19 日 03:14:07 UTC,带符号的 32 位 Unix 时间戳会溢出。现代 64 位计算机系统不受影响。遗留的 32 位部署在该日期之前仍需关注。
- 以 Unix 整数计时的计算机系统:Linux、macOS、Windows、BSD、iOS、Android 以及所有主流数据库引擎
- 本地时间与 UTC:时间戳本身是 UTC;本地时间只是众多可能呈现方式之一
- 2038 年 1 月 19 日 03:14:07 UTC —— 当带符号 32 位 Unix 时间戳达到 2,147,483,647 并溢出时
- 64 位计算机系统将安全范围扩展到约公元 2920 亿年——远超任何实际顾虑
- 本地时间取决于时区偏移和夏令时规则——只在显示时应用,绝不在存储时应用
本转换器如何计算
本页上的每一次转换都完全在你的浏览器中运行,采用 Unix 时间的标准 POSIX 定义——自 1970-01-01 00:00:00 UTC 起的秒数,不含闰秒。你输入的时间戳绝不会发送到服务器;计算在本地由 JavaScript 完成。时间以 UTC 计算,仅在显示时才渲染为你所选的时区。