Epoch 转日期 — 将 Unix 时间戳转换为可读日期
将 Unix 时间戳转换为本地时区或 UTC 下的可读日期。支持秒、毫秒、纳秒,全部在浏览器中完成。
Epoch to Date
Convert Unix epoch timestamps to human-readable dates. Works entirely in your browser — no uploads.
Epoch 转日期与日期转 Epoch 是互逆的两个方向,转换过程同样机械 —— 把时间戳除以精度单位(毫秒除以 1000,微秒除以 1_000_000,纳秒除以 1_000_000_000),再加上 Unix 纪元(1970 年 1 月 1 日 00:00:00 UTC),就得到了日期。明明相当于一句 new Date(timestamp * 1000),却仍然值得做一个工具,原因就在精度:时间戳 1749936000 可能是秒(2026-06-16),也可能是毫秒(1970-01-21),具体取决于来源用什么单位。精度一旦搞错,得到的日期可能差 55 年,也可能差 18 个月,而且 bug 是"沉默"的 —— 输出依然是个合法日期,只是恰好不是你要的那个。
Epoch 转日期里"不那么显然"的一点是自动识别。本工具用数字大小来猜测精度:10 位是秒,13 位是毫秒,16 位是微秒,19 位是纳秒。这种识别是启发式的 —— 在 2286 年时,一个 10 位数其实是毫秒而不是秒,工具会识别错。对于存在歧义的输入(精度边界附近的时间戳、遥远的未来日期),工具会显示识别到的单位,允许你手动覆盖。默认按浏览器本地时区显示输出,配有 UTC 切换,可以查看同一瞬间的 UTC 表示。
最后给个使用建议:如果时间戳来自 Unix C API、Bash 的 date +%s 或 Python 的 time.time(),精度就是秒。如果来自 JavaScript 的 Date.now()、Java 的 System.currentTimeMillis() 或带毫秒精度的日志文件,精度是毫秒。如果来自 Go 的 time.Now().UnixNano() 或高分辨率遥测源,精度是纳秒。本工具的自动识别能覆盖常见情形;对于存在歧义的输入,输出面板里的精度切换让你逐一尝试,挑出能得到合理日期的那个即可。
使用方法
输入时间戳
在输入框中键入或粘贴 Unix 时间戳。工具会根据数字的大小自动识别精度(秒、毫秒、微秒、纳秒),并在输出中显示识别到的单位。
选择显示时区
默认是浏览器所在的本地时区。切换至 UTC 即可看到同一瞬间在世界协调时间下的表示。输出同时展示两种格式,时区用缩写括注在末尾。
复制格式化日期
可以按 ISO 8601 字符串复制(适合 API 和配置文件)、按本地化字符串复制(适合人眼阅读),或按原始精度的 Unix 时间戳复制(便于来回转换)。
常见问题
工具如何识别时间戳的精度?
靠数字大小。1970 到 2038 年是秒(10 位)。1970 到大约公元 274,000 年是毫秒(13 位)。微秒是 16 位,纳秒是 19 位。工具会在数字仍处于合理日期范围内的情况下,选最大的那个单位。
日期显示的是哪个时区?
默认是浏览器所在的本地时区。「UTC」切换开关会把同一瞬间切到世界协调时间显示。输出会在每种格式后用时区缩写(PST、EST、JST 等)标注,方便核对转换结果。
为什么日期和我预期的差了一天?
常见原因有两个:时间戳本身是秒,但工具识别成了毫秒(反过来同理);或者时区与你的假设不一致。先检查识别到的单位和时区切换,再重新生成。
能转换负数时间戳吗?
可以 —— 负的 Unix 时间戳代表 1970 年之前(Unix 纪元之前)的日期。工具能处理的负值范围大约从公元前 271,821 年到公元 275,760 年(约比 1970 年早 27 万年到晚 27 万年)。超出该范围的日期 JavaScript 的 `Date` 对象无法支持。
工具能处理的最大时间戳是多少?
JavaScript 的 `Date` 对象最多支持距离 1970 年 ±275,760 年。换成 epoch 秒,大约是 8.7 × 10^12;纳秒精度则大约是 8.7 × 10^21。工具沿用 JavaScript 的这一上限,超出范围的日期会标记为 Invalid Date。
限制说明
- JavaScript Date 的范围限制工具内部使用 JavaScript 的 `Date` 对象,可处理的日期大约从公元前 271,821 年到公元 275,760 年。超出该范围的时间戳会产生 `Invalid Date`。对于史前或遥远未来的时间戳,请改用 Python 或 Java 工具,它们的日期范围更长。
- 夏令时切换可能让人困惑JavaScript 的 `Date` 对象在本地时区下能正确处理夏令时切换,但在切换当日 UTC 与本地时间的相互转换可能存在歧义。输出会同时展示两种格式,方便核对结果。
- 不支持阴历或恒星时本工具工作于太阳时(格里高利历)。不支持与阴历、天文学用的恒星时,以及与 TAI(国际原子时,与 UTC 因闰秒不同)之间的转换。天文学计算请使用专用库。
平台说明
- macOS
- macOS Terminal 中的等价命令:`date -r 1749936000`(较新的 BSD coreutils 上是 `date -r @1749936000`)。偶尔做一次转换、不值得专门开终端时,浏览器工具是更合适的选择。
- Windows
- PowerShell 中 .NET 的等价写法:`[DateTimeOffset]::FromUnixTimeSeconds(1749936000).ToString('o')`。需要跨平台一致的结果时浏览器工具更合适 —— 同样的输入在任何平台上都产生同样的输出。
- Linux
- GNU coreutils 中的等价命令:`date -d @1749936000`。对于从聊天、邮件或日志里粘贴过来的内容,重新输入不现实,浏览器工具是更合适的选择。
- CLI
- 同样的转换逻辑在每种语言的标准库里都有:Python 的 `datetime.fromtimestamp()`、Ruby 的 `Time.at`、Go 的 `time.Unix()`。对于不值得专门写脚本的临时性转换,浏览器工具是更合适的选择。
- Web
- 完全在客户端运行。页面加载后可离线使用。转换依赖 JavaScript 的 `Date` 对象,该对象在夏令时边界附近有已知怪癖 —— 关键场景下请与基准时钟交叉核对结果。