Unix 时间戳转换工具

在线转换 Unix 时间戳与可读日期,自动识别秒和毫秒,同时显示 UTC 与本地时间。

所有处理均在你的浏览器内完成,数据不会上传。

请输入时间戳

使用方法

  1. 输入一个 Unix 时间戳,输入框已预填当前时间。
  2. UTC 和本地时间会随输入实时更新。
  3. 点击 Now 重置为当前时间戳。

关于 Unix 时间戳

Unix 时间戳记录的是从 1970 年 1 月 1 日 00:00:00 UTC(称为“纪元”)起经过的秒数。因为它 就是一个不带时区信息的整数,所以完全没有歧义——这正是它成为系统间传递时间的默认方式的原因。

秒与毫秒的混淆在这里制造的 bug 比其他任何问题都多。Unix 工具链和大多数数据库用秒, JavaScript 的 Date.now() 和 JVM 用毫秒。把两者搞混时,得到的日期会偏离现在约一千倍, 这种错误通常一眼能看出来;但反方向差 1000 倍的值会落在 1970 年附近,很容易被误读成 “这个字段没赋值”。

时间戳本身不携带时区。上面显示的本地时间只是你浏览器的解释,同一个时间戳在其他地区的 用户那里会显示成另一个时间。正确做法是:存储和传输一律用 UTC,只在最终展示时才做转换。

常见问题

秒和毫秒是怎么判断的?

13 位及以上按毫秒解释,更短的按秒解释。这个启发式规则覆盖了 1970 年到 2286 年之间你会遇到的几乎所有时间戳。

为什么本地时间和我预期的不一样?

本地时间使用你设备的时区和夏令时规则。如果需要一个稳定的参照,请用 UTC 那一行。

能转换 1970 年之前的日期吗?

可以。负数时间戳表示纪元之前的时刻,工具能正确处理。

什么是 2038 年问题?

用有符号 32 位整数存时间戳的系统会在 2038 年 1 月 19 日溢出。本工具用 JavaScript 数字,不受影响,但生成你那些时间戳的系统未必不受影响。